Peewee模型中的自增自定义主键

5 投票
4 回答
10030 浏览
提问于 2025-04-18 11:19

我想要一个主键 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

撰写回答