在 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
我有以下声明:
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