SQLAlchemy查询将id标记为null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLAlchemy查询将id标记为null相关的知识,希望对你有一定的参考价值。

我正在使用SQLAlchemy在表中插入一行。该表的定义如下:

class MyTable():
    __table__ = "my_table"
    id = Column(BigInteger, primary_key=True)
    stuff1 = Column(Numeric)

这是炼金术线:

MyTable(stuff1=100)

这是它生成的查询:

INSERT INTO my_table (id, stuff1) VALUES (null, 100)

我得到这个错误:

IntegrityError('(psycopg2.IntegrityError) null value in column "id" violates not-null constraint

由于id是主键,我希望它能自动生成。但似乎我必须手动应用序列吗?我究竟做错了什么?

答案

这种情况在我之前发生过,通常我要么没有使用sqlalchemy来创建表,要么我在sqlalchemy中的表定义不完整/不正确。如果您有一个'create table if not exists'设置,那么您的更改将不会与postgres中的表定义同步。我将使用psql命令行工具检出表定义,以验证是否未为主键设置服务器默认值。它应该是串行数据类型或使用外部序列。

以上是关于SQLAlchemy查询将id标记为null的主要内容,如果未能解决你的问题,请参考以下文章

在 sqlalchemy 中计算子查询

为啥 SQLAlchemy 在查询中标记列

需要帮助将带有自连接的 MySQL 查询转换为 SQLAlchemy

SQLAlchemy ORM如何将查询与表连接起来

如何使用 SqlAlchemy 按 id 查询数据库?

flask-marshmallow:仅当方法为 PUT 时如何将所有字段标记为可选