为什么 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
我正在使用 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