Peewee模型中的自增自定义主键
我想要一个主键 id
字段,它的类型是 Bigint
class Tweets(Model):
id = BigIntegerField(primary_key=True)
...
但是这个字段需要自动增加,我在Peewee的文档里找不到方法。请问有没有可能实现?
更新:我正在使用MySql数据库。
4 个回答
1
看起来这个方法应该有帮助。
在创建表之后,执行:
db.register_fields({'primary_key': 'BIGINT AUTOINCREMENT'})
之后,当你说
class Tweets(Model):
id = PrimaryKey()
...
class Meta():
db = db
那么在mysql中,这个字段会显示为BigInt,并且会自动增加。
2
我觉得最简单的办法是使用SQL约束:
import peewee
class MyModel(peewee.Model):
id = peewee.BigIntegerField(primary_key=True, unique=True,
constraints=[peewee.SQL('AUTO_INCREMENT')])
3
Peewee在3.1版本中新增了一个叫做BigAutoField的字段,这个字段是一个自动递增的整数,使用的是64位整数存储。这个功能应该能满足你的需求:
http://docs.peewee-orm.com/en/latest/peewee/api.html#BigAutoField
4
Peewee会自动生成一个整数类型的id
列,这个列是主键,并且具有自动递增的特性。无论你用Peewee创建什么表,都是这样。
通常情况下,IntegerField
就足够用了;BigIntegerField
很少会用到。你真的需要比2147483647还要大的数字吗?你会插入超过20亿行数据吗?
详细信息请查看:http://dev.mysql.com/doc/refman/5.5/en/integer-types.html