0

所以这是我的第一个 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='),
] )

感谢您的任何帮助

4

2 回答 2

6

您可能会更好地使用django south,这样您就不必每次都重新创建数据库。

但是,如果您想重新创建 DB,可以尝试使用固定装置来填充数据 DB

于 2012-09-02T05:53:22.617 回答
1

Neither the source code nor the table in mysql indicates any default non-null value for first_name or last_name which makes sense. Perhaps you might want to check again?

mysql> desc auth_user;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| username     | varchar(30)  | NO   | UNI | NULL    |                |
| first_name   | varchar(30)  | NO   |     | NULL    |                |
| last_name    | varchar(30)  | NO   |     | NULL    |                |
| email        | varchar(75)  | NO   |     | NULL    |                |
| password     | varchar(128) | NO   |     | NULL    |                |
| is_staff     | tinyint(1)   | NO   |     | NULL    |                |
| is_active    | tinyint(1)   | NO   |     | NULL    |                |
| is_superuser | tinyint(1)   | NO   |     | NULL    |                |
| last_login   | datetime     | NO   |     | NULL    |                |
| date_joined  | datetime     | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
于 2012-09-02T14:44:12.950 回答