2017-02-06 3 views
-1

PeeWee ORMでは、プライマリキーにid = IntegerField(primary_key=True)、またはid = PrimaryKeyField()を使用できます。PEEWEEでMYSQLの列にAUTO_INCREMENTフラグを追加するにはどうすればよいですか?

Model.create_table(fail_silently=True)を実行して定義されたテーブルを見ると、主キーフィールドにはAUTO_INCREMENTとマークされません。

この問題は、peeweeを使用しないアプリケーションがあり、このテーブルにレコードを挿入した場合に問題になります。

MySqlでAUTO_INCREMENTフィールドにマークを付けることができますか、それによってエラーが発生しますか?

答えて

0

まず、テーブルの主キーを作成する必要はありません。 Peeweeは、idという名前のすべてのテーブルの主キーを自動的に作成します。

しかし、あなたはそれを作成したい(と私は通常行う)場合は、としてそれを作成します。

id = PrimaryKeyField(primary_key=True) 

主キーidがAUTO_INCREMENTとしてマークされているいずれかの方法を。 MySQL WorkbenchやDBeaver、または好きな方法で見ることができます。

また、私は通常とテーブルを作成:もちろん

mydb = MySQLDatabase(**config) 
mydb.connect() 
mydb.create_tables([Model1_name, Model2_name, Model3_name], safe=True) 

Model.create_table(fail_silently=True) 

も(私はそれをチェックする)

+0

おそらく、私はprimary_key = Trueパラメータがないため、AUTO_INCREMENTとしてマークしていません。私はそれに感謝します。 –

+0

テーブルがInnoDBであると仮定しました。それともMyISAMですか? – gms

+0

primary_key = Trueは必要ありません。 – coleifer

1

の違いの問題もなく、単一のテーブルのために働きますIntegerField(primary_key=True)およびPrimaryKeyField()は、前者は自動インクリメントについての情報を指定しないが、後者は何も指定しないということです。彼らはではなく、と同じです。

を使用するのは、IDがデータベース外の一部の送信元からのものである場合です。

一意のIDが必要な場合はPrimaryKeyField()を使用してください。

関連する問題