如何在Peewee的MYSQL中的列上添加AUTO_INCREMENT标志?

时间:2017-02-06 13:58:10

标签: mysql peewee

在PeeWee ORM中,您可以使用id = IntegerField(primary_key=True)作为主键或id = PrimaryKeyField()

如果查看通过执行Model.create_table(fail_silently=True)定义的表,主键字段不会标记为AUTO_INCREMENT。

如果您有另一个不使用peewee的应用并在此表中插入记录,则会出现问题。

你能在MySql中标记AUTO_INCREMENT字段还是会导致错误?

2 个答案:

答案 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)

也适用于没有问题的单个表(我检查过)