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

毎回 DB を再作成する必要がないように、django southを使用する方がよい場合があります。

ただし、DB を再作成したい場合は、フィクスチャを使用してデータ DB を入力してみてください。

于 2012-09-02T05:53:22.617 に答える
1

first_nameソース コードも mysql のテーブルも、またはの null 以外のデフォルト値を示していませんlast_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    |                |
+--------------+--------------+------+-----+---------+----------------+
于 2012-09-02T14:44:12.950 に答える