Postgresql SQLAlchemy Postgres 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

我有一个名为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 = {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,还有其他方法吗