我正在使用python-flask,sqlalchemy。 我对sqlalchemy结果有疑问。 我想要表格中的特定列结果,所以我尝试了
query = session.query(Table.column_one, Table.coulmn_two).first()
所以我有结果,但是我无法更新该结果。 我这样尝试过
query.column_one = value
或
setattr(query, column_one, value)
但结果是:
AttributeError: can't set attribute
所以我找到了这个帖子 Can't set attribute on result objects in SQLAlchemy flask 并且在这篇文章中,无法通过该查询设置属性。 这是真的吗?没办法吗?
答案 0 :(得分:3)
方法很多!
方法1:
您必须获取整个对象才能对其进行更新
尝试一下:
query = session.query(Table).first()
query.column_one = value # setattr(query, column_one, value)
session.commit()
方法2:
使用SQLAlchemy Core API
from sqlalchemy import update
stmt = update(Table).where(Table.c.id==5).values(id=1)
上有关此方法的更多信息
Ilja Everilä在 comments,所以功劳归于他,支持他的评论!
方法3:
load_only()
方法,它可以像这样使用:
from sqlalchemy.orm import load_only
query = session.query(Table).options(load_only("column_one", "column_two"))
query.column_one = Value
session.commit()
此link上有关load_only()
方法的更多信息
方法4:
Query.update()
session.query(Table).filter(Table.column_one == 25).update({Table.column_one: 10}, synchronize_session=False)
session.commit()
有关Query.update()
here的更多信息!