在使用SQLAlchemy的update()后,有办法获取更改的值吗?

1 投票
1 回答
1396 浏览
提问于 2025-04-15 17:59

在调用 update() 方法后,我知道返回值有一个 .rowcount 属性,可以告诉我有多少行被更改了。有没有办法获取这些行被更改后的实际新 呢?

举个例子,如果我做了 SQLAlchemy 中相应的操作:

UPDATE t SET x=x+1 WHERE y=z

...有没有办法获取 x 的新值?还是说我必须再执行一个 SELECT 查询?

1 个回答

3

ResultProxy 有两个方法。第一个是 last_updated_params(),它会返回一个字典,里面包含了在执行语句时发送的所有绑定参数的值。第二个是 postfetch_cols(),这是一个列的集合,里面列出了在 UPDATE 语句中嵌入的 SQL 表达式的列(你需要在执行后再去选择这些值)。需要注意的是,这些集合只会在单个语句执行时被填充,而不会在 "executemany" 调用中被填充,因为后者是一次性传递多个参数的。

撰写回答