如何更新SQLAlchemy RowProxy?
我正在使用SQLAlchemy表达式语言(而不是ORM),并试图找出如何更新查询结果 我发现RowProxy对象不支持赋值,而是抛出一个如何更新SQLAlchemy RowProxy?,sqlalchemy,Sqlalchemy,我正在使用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 `f
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'
我发现,它使用ORM,但我特别希望使用表达式语言
我还发现,它将行转换为dict并更新dict,但这似乎是一个很难解决的问题
所以我有几个问题:
- 这真的是唯一的方法吗
- 此外,这是推荐的方法吗
- 最后,由于缺少文档,我不禁要问:我这么做是不是误用了SQLAlchemy
engine.execute(mytable.update().where(mytable.c.id == <id>).values(foo="bar"))
engine.execute(mytable.update().where(mytable.c.id==).value(foo=“bar”))
通过更新RowProxy
您试图实现什么?我想从数据库中获取一行,然后我有一些python逻辑来选择如何更新它。然后我只想更新我获取的行。那么你误用了SQLAlchemy。您描述的用法是使用ORM的好处。如果您只想限制自己使用SQLAlchemy Core,那么您需要执行mytable.update().values(foo=bar)
。好的,谢谢。如果你把它作为一个答案,我会接受的。一个问题-是否可以使用声明性映射->?