所以這是我第一個使用Django的項目。結果,我似乎每天都在學習如何處理模型的新事物。正因爲如此,我的數據庫每天都在變化。每次我想更新數據庫時,都需要刪除它,創建它,運行syncdb,然後用用戶數據填充它。我希望用Python腳本來自動化這個過程,以免我不斷重新創建數據庫的麻煩。Python腳本來填充auth_user失敗的默認值錯誤
當我嘗試運行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', '[email protected]', 'pbkdf2_sha256$10000$A3ww6NUZ8TmS$5UA2sXCMS6x7uIGKe20hDckmisBY/rGUK7aye/tMUIw='),
])
感謝您的幫助
我做了一些研究。顯然,Django在數據庫之上的抽象層實現了默認值。即使數據庫表示默認值爲NULL,Django也會插入它自己的默認值。 – Nick