这是我和Django的第一个项目。因此,我似乎每天都在学习它如何处理模型。正因为如此,我的数据库每天都在变化。每次我想更新我的数据库,我都需要删除它,创建它,运行syncdb,然后用用户数据填充它。我希望用一个Python脚本来自动化这个过程,从而省去不断重新创建数据库的麻烦。在
当我试图运行INSERT命令时,MySQL告诉我column first_name没有默认值。我看了一下来源(https://github.com/django/django/blob/master/django/contrib/auth/models.py),类User肯定会为第一个\u 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='),
] )
谢谢你的帮助
最好使用django south,这样就不必每次都重新创建数据库。在
但是,如果要重新创建数据库,可以尝试使用fixtures to populate data DB。在
源代码和mysql中的表都没有指明}的任何默认非空值,这是有意义的。也许你想再查一次?在
first_name
或{相关问题 更多 >
编程相关推荐