在 sqlalchemy 中更新时如何绕过 "keyword can't be an expression"?

how to go around "keyword can't be an expression" when updating in sqlalchemy?

我有以下声明:

conn = engine.connect()
conn.execute(Somedatabase.update().where(somecriteria==somecriteriavalue).values(name = somevalue))

它有效,但是当我尝试通过以下方式替换它时:

D={1: "name"}
print(D[1])
conn.execute(Somedatabase.update().where(somecriteria==somecriteriavalue).values(D[1]) = somevalue))

然后,我得到一个错误:"keyword can't be an expression"。我怎样才能循环使用它?

到目前为止我只知道

text="conn.execute(Somedatabase.update().where(somecriteria == somecriteriavalue).values("+(D[1])+" = \"somevalue\"))"
eval(text) 

但我宁愿不使用 eval。

我相信您可以使用字典作为值的参数:

D={1: "name"}
print(D[1])
conn.execute(
    Somedatabase.update().where(
        somecriteria==somecriteriavalue
    ).values({
        D[1]: somevalue,
    })
)

https://docs.sqlalchemy.org/en/13/core/dml.html#sqlalchemy.sql.expression.ValuesBase.values