我希望使用update
查询更新多个项/行/对象。但是,在执行查询后,该查询似乎不会返回任何对象。如何获得受影响对象的列表。例如,使用这样的查询:
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()
,它就不会返回任何内容。
发布于 2022-10-14 16:53:16
好的,这可能是从update
方法获得响应的一种附带方式,但是您可以通过在update方法中使用synchronize_session='fetch'
来获取更新列的返回信息。
因此,最初的查询应该是:
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")
更多细节可以在文档中找到。
发布于 2022-10-13 16:02:04
你试过这个吗?
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'})
https://stackoverflow.com/questions/74055055
复制相似问题