gpt4 book ai didi

python - 具有 2 个 Primary_keys 的 SQLAlchemy 表如何自动增量第一个主键

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:51 25 4
gpt4 key购买 nike

我有一个带有 2 个主键的表,其中第二个主键也是一个外键。当我尝试填充数据库时,我将收到“NOT NULL 约束失败:items.id1”错误。填充时我将始终为 id2 提供已知的 id。那么如何让 sqlalchemy 自动递增 id1 呢?

class items(Base):
__tablename__ = 'items'
id1 = Column(BIGINT(unsigned=True).with_variant(Integer, "sqlite"), primary_key=True,)
#location id
id2 = Column(Integer, ForeignKey('table2.id'), primary_key=True)

id1 和 id2 的组合必须始终是唯一的,并且这两个组合用于标识项目。 id1 是不够的,因为数据库可能位于多个位置,并且表会不时同步。

我已经尝试过这个解决方案,但它已经过时并且不再起作用:How to insert a row with autoincrement id in a multi-primary-key table?

编辑:解决此问题的方法是使用 Postgres DB。 SQLite 很精简,但很笨。

最佳答案

如果您使用的是 sqlite:

id1 = Column(BIGINT(unsigned=True).with_variant(Integer, "sqlite"), primary_key=True, sqlite_autoincrement=True)
id2 = Column(Integer, ForeignKey('table2.id'), primary_key=True, sqlite_autoincrement=False)

如果您使用的是 mysql,那么简单的自动增量就可以工作:

id1 = Column(BIGINT(unsigned=True).with_variant(Integer, "sqlite"), primary_key=True, autoincrement=True)
id2 = Column(Integer, ForeignKey('table2.id'), primary_key=True, autoincrement=False)

P.S.:先删除表格,然后重试。

关于python - 具有 2 个 Primary_keys 的 SQLAlchemy 表如何自动增量第一个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com