所以这是我的第一个 Django 项目。结果,我似乎每天都在学习关于它如何处理模型的新东西。因此,我的数据库每天都在变化。每次我想更新我的数据库时,我都需要删除它、创建它、运行 syncdb,然后用用户数据填充它。我希望使用 Python 脚本自动执行此过程,以省去不断重新创建数据库的麻烦。
当我尝试运行 INSERT 命令时,MySQL 告诉我 first_name 列没有默认值。我快速查看了源代码(https://github.com/django/django/blob/master/django/contrib/auth/models.py),User 类明确定义了 first_name 列的默认值,以及许多其他人。现在有人为什么我会收到此错误吗?
这是脚本的相关部分:
import MySQLdb, os
from django.core.management import call_command
os.environ['DJANGO_SETTINGS_MODULE'] = "DatingWebsite.settings"
db = MySQLdb.connect(user = "project", passwd = "project")
c = db.cursor()
try:
c.execute("DROP DATABASE projectdb;")
except:
pass
finally:
c.execute("CREATE DATABASE projectdb;")
call_command('syncdb', interactive=False)
c.execute("USE projectdb;")
c.executemany("""INSERT INTO auth_user (id, username, email, password)
VALUES (%s, %s, %s, %s)""",
[
(1, 'bob', 'bob@gmail.com', 'pbkdf2_sha256$10000$A3ww6NUZ8TmS$5UA2sXCMS6x7uIGKe20hDckmisBY/rGUK7aye/tMUIw='),
] )
感谢您的任何帮助