我正在使用SQLAlchemy表达式语言(而不是ORM),我正在尝试弄清楚如何更新查询结果。
我发现RowProxy对象不支持赋值,而是抛出AttributeError
:
# Get a row from the table
row = engine.execute(mytable.select().limit(1)).fetchone()
# Check that `foo` exists on the row
assert row.foo is None
# Try to update `foo`
row.foo = "bar"
AttributeError: 'RowProxy' object has no attribute 'foo'
我找到了this solution,它使用了ORM,但我特别希望使用表达式语言。
我还找到this solution,它将行转换为dict并更新dict,但这似乎是一个hacky变通方法。
所以我有几个问题:
答案 0 :(得分:2)
您滥用SQLAlchemy。您所描述的用法是使用ORM的好处。如果您只想限制自己使用SQLAlchemy Core,那么您需要执行
engine.execute(mytable.update().where(mytable.c.id == <id>).values(foo="bar"))