sqlalchemy:如何在 mysql 中添加具有自动增量的表行

Shy*_*yam 6 mysql sqlalchemy

我在 mysql 5.5 中使用 sqlalchemy 0.8

我有一个简单的表,其 ORM 定义如下所示

class TrackingTable(db.Model):

    __tablename__ = 'tracking_table'

    trackid = db.Column(db.BigInteger,primary_key=True)
    custid = db.Column(db.String(20), db.ForeignKey('customer.id'))
    tracktime = db.Column(db.DateTime ,nullable=False)
    formdata = db.Column(db.String(100),nullable=False)
Run Code Online (Sandbox Code Playgroud)

我假设(根据文档) trackid 是 BIGINT 类型的主键,因此它会自动递增。

但是当我尝试在 db 中添加一条记录时

updateRecord = TrackingTable(custid='002',tracktime='2013-02-02',formdata='logged in')

db_session.add(updateRecord)
db_session.flush()
db_session.commit()
Run Code Online (Sandbox Code Playgroud)

它发出警告警告:字段“trackid”没有默认值

并且它总是为 trackid 取值 0,因此第二次添加总是失败并出现错误 IntegrityError: (IntegrityError) (1062, "Duplicate entry '0' for key 'PRIMARY'") 'INSERT INTO tracking_table (custid, tracktime , 表格数据)

请帮我解决这个问题。理想情况下,我希望这是一个由数据库处理的递增值,但我无法弄清楚如何实现这一点。

提前致谢

as_*_*ove 0

您需要将字段值设置为“AUTO_INCRMENT”,而不是向其中传递实际值,而是传递 NULL。尝试首先传递 NULL,因为它可能已设置为 AUTO_INCRMENT。