在PeeWee ORM中,您可以使用id = IntegerField(primary_key=True)
作为主键或id = PrimaryKeyField()
。
如果查看通过执行Model.create_table(fail_silently=True)
定义的表,主键字段不会标记为AUTO_INCREMENT。
如果您有另一个不使用peewee的应用并在此表中插入记录,则会出现问题。
你能在MySql中标记AUTO_INCREMENT字段还是会导致错误?
答案 0 :(得分:1)
IntegerField(primary_key=True)
和PrimaryKeyField()
之间的区别在于前者没有指定任何有关自动增量的信息,而后者则没有。它们不相同。
当ID来自数据库外部的某些来源时,请使用IntegerField(primary_key=True)
。
当您需要唯一身份证时,请使用PrimaryKeyField()
。
答案 1 :(得分: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)
也适用于没有问题的单个表(我检查过)