用Python脚本填充auth_user时遇到默认值错误问题

2024-04-19 06:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我和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='),
] )

谢谢你的帮助


Tags: djangonameimport脚本comauth数据库execute
2条回答

最好使用django south,这样就不必每次都重新创建数据库。在

但是,如果要重新创建数据库,可以尝试使用fixtures to populate data DB。在

源代码和mysql中的表都没有指明first_name或{}的任何默认非空值,这是有意义的。也许你想再查一次?在

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    |                |
+       +       +   +  -+    -+        +

相关问题 更多 >