如何在Postgres + SQLAlchemy中将on_conflict_do_nothing()与returning()结合使用?

时间:2020-06-18 08:03:40

标签: postgresql sqlalchemy

我有一个关系表“ NoteTags”,可以通过简单的模式将“ note”与“ tag”连接起来:

tag_id: integer, foreign key
note_id: integer, foreign key

表的主键是tag_id,note_id。

我当前的插入语句如下:

insert(table).values(elements).returning(*primary_key_columns)

当前,如果您尝试插入一个已经存在的tag_id / note_id组合,它将无法插入。

通常,我会使用on_conflict_do_nothing(),但这是行不通的,因为然后“返回”不会返回该行的值,而我需要它来执行该操作。

在发生冲突时如何让它“什么都不做”,但仍然returning()来做它的事情?

我已经看到了建议使用on_conflict_update()的类似问题的解决方案(只需执行“冗余”更新,即将字段更新为相同的值。)但是,我所有的字段都已经在索引中有冲突(即主键),所以我似乎没有剩余任何字段可以“更新”。

0 个答案:

没有答案