首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在用SQLAlchemy发送更新查询时,如何获得受影响的行(对象)列表?

在用SQLAlchemy发送更新查询时,如何获得受影响的行(对象)列表?
EN

Stack Overflow用户
提问于 2022-10-13 11:32:25
回答 2查看 44关注 0票数 0

我希望使用update查询更新多个项/行/对象。但是,在执行查询后,该查询似乎不会返回任何对象。如何获得受影响对象的列表。例如,使用这样的查询:

代码语言:javascript
运行
复制
session.query(my_model).filter(
    my_model.status == 'OK',
    my_model.is_validated == True,
    my_model.expires_at <= plum_dt.now(),
).update({'status':'EXPIRED'})

我希望返回带有更新对象的列表。如果我只是在查询的末尾添加all(),它就不会返回任何内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-14 16:53:16

好的,这可能是从update方法获得响应的一种附带方式,但是您可以通过在update方法中使用synchronize_session='fetch'来获取更新列的返回信息。

因此,最初的查询应该是:

代码语言:javascript
运行
复制
session.query(my_model).filter(
    my_model.status == 'OK',
    my_model.is_validated == True,
    my_model.expires_at <= plum_dt.now(),
).update({'status':'EXPIRED'}, synchronize_session="fetch")

更多细节可以在文档中找到。

票数 1
EN

Stack Overflow用户

发布于 2022-10-13 16:02:04

你试过这个吗?

代码语言:javascript
运行
复制
 qry = session.query(my_model).filter(
       my_model.status == 'OK',
       my_model.is_validated == True,
       my_model.expires_at <= plum_dt.now(),
   )
 
 elements_to_update = qry.all()
 
 qry.update({'status':'EXPIRED'})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74055055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档