gpt4 book ai didi

python - 如何将属性设置为 SQLAlchemy 结果中的特定列?

转载 作者:行者123 更新时间:2023-12-01 22:04:26 25 4
gpt4 key购买 nike

我正在使用 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:

你必须得到整个对象才能更新它

试试这个:

query = session.query(Table).first()
query.column_one = value # setattr(query, column_one, value)
session.commit()

方法#2:

使用 SQLAlchemy 核心 API

from sqlalchemy import update

stmt = update(Table).where(Table.c.id==5).values(id=1)

有关此方法的更多信息,请访问 this link

There are other methods, mentioned by Ilja Everilä in the comments , So the credit goes to him, upvote his comment!

方法#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 !

关于python - 如何将属性设置为 SQLAlchemy 结果中的特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52619891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com