小编Mat*_*don的帖子

使用具有唯一约束的 SQLAlchemy 的 on_conflict_do_update()

我正在使用 SQLAlchemy 1.3.4 和 PostgreSQL 11.3。

\n\n

我有以下(简化的)表定义:

\n\n
class MyModel(Base):\n    __tablename__ = \'mymodel\'\n\n    id = Column(Integer, primary_key=True)\n    col1 = Column(Unicode, nullable=False)\n    col2 = Column(Unicode, nullable=False)\n    col3 = Column(Unicode, nullable=False)\n    col4 = Column(Boolean)\n\n    created_at = Column(DateTime(timezone=True), nullable=False)\n    updated_at = Column(DateTime(timezone=True), nullable=False)\n\n    __table_args__ = (\n        Index(\'uq_mymodel_col1_col2_col3_col4\',\n              col1, col2, col3, col4,\n              unique=True, postgresql_where=col4.isnot(None)),\n        Index(\'uq_mymodel_col1_col2_col3\',\n              col1, col2, col3,\n              unique=True, postgresql_where=col4.is_(None)),\n    )\n
Run Code Online (Sandbox Code Playgroud)\n\n

(我必须创建 2 个唯一索引而不是 a,UniqueConstraint因为 aUniqueConstraint将允许多行具有相同的(col1, col2, col3)iscol4为空,这是我不想要的)

\n\n

我正在尝试执行以下查询:

\n\n
INSERT INTO mymodel …
Run Code Online (Sandbox Code Playgroud)

postgresql sqlalchemy

4
推荐指数
1
解决办法
5525
查看次数

标签 统计

postgresql ×1

sqlalchemy ×1