为什么 AutoField 将 id 字段创建为空?

Why does AutoField create the id field empty?

我正在使用 create 方法在 MySQL table:

中创建一条记录
class Interactions(BaseModel):
    id = AutoField(column_name='id')
    name = TextField(column_name='name')

    class Meta:
        table_name = 'interactions'

Interactions.create(name = 'Facebook')

记录已创建,但 id 为空。如何解决?

您的 table 一定有问题 -- 可能这个 table 是事先创建的或者没有使用自动递增 ID?

此示例表明 AutoField 确实是自动递增的,并且您在自己的代码或数据库架构中忽略了某些内容:

In [1]: from peewee import *

In [2]: db = SqliteDatabase(':memory:')

In [3]: class Reg(Model):
   ...:     id = AutoField(column_name='id')
   ...:     name = TextField(column_name='name')
   ...:     class Meta:
   ...:         database = db
   ...: 

In [4]: db.create_tables([Reg])

In [5]: Reg.create(name='r1')
Out[5]: <Reg: 1>

In [6]: for r in Reg.select():
   ...:     print(r.id, r.name)
   ...: 
1 r1