Postgresql SQLAlchemy Postgres upsert与部分索引
我有一个名为Person的表,有三个字段——ID、city和name。City可以为null,所以我有两个部分唯一索引-一个在ID上,City不为null的City,另一个在ID上,City为null的City 现在我想要一个使用SQLAlchemy的upsert语句,以及那些部分索引,但我无法理解语法。目前我有:Postgresql SQLAlchemy Postgres upsert与部分索引,postgresql,sqlalchemy,upsert,partial-index,Postgresql,Sqlalchemy,Upsert,Partial Index,我有一个名为Person的表,有三个字段——ID、city和name。City可以为null,所以我有两个部分唯一索引-一个在ID上,City不为null的City,另一个在ID上,City为null的City 现在我想要一个使用SQLAlchemy的upsert语句,以及那些部分索引,但我无法理解语法。目前我有: table = models.Person.__table__ insert_statement = insert(table, upsert_values) update_dict
table = models.Person.__table__
insert_statement = insert(table, upsert_values)
update_dict = {c.name: c for c in insert_statement.excluded if c.name != "id"}
upsert_statement = insert_statement.on_conflict_do_update(
index_elements=[table.c['id'], table.c['city']],
set_=update_dict
)
但当我尝试执行时,我得到了
sqlalchemy.exc.ProgrammingError:(psycopg2.errors.InvalidColumnReference)没有与冲突规范匹配的唯一约束或排除约束
这怎么行?除了运行纯SQL,还有其他方法吗