如何设置SQLAlchemy结果中特定列的属性?

时间:2018-10-03 04:51:33

标签: python sqlalchemy

我正在使用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 并且在这篇文章中,无法通过该查询设置属性。 这是真的吗?没办法吗?

1 个答案:

答案 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)

this link

上有关此方法的更多信息
  

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的更多信息!