gpt4 book ai didi

python - 获取实际更新为不同值的列?

转载 作者:行者123 更新时间:2023-11-29 12:55:31 26 4
gpt4 key购买 nike

我正在运行这样的东西:

cursor.execute(
'''
UPDATE my_table
SET name=%s, about=%s, title=%s
WHERE id=%s
''',
(name, about, title, id_)
)

保证只更新一行,因为它是根据 id 主键进行更新的。

然而,大多数情况下,实际上只有一个字段发生了变化,即 abouttitle 被“更新”为相同的字段它们已经存在的值,只有 name 实际上发生了变化。

我怎样才能知道哪些列实际发生了变化?这是记录每个单独更改所必需的。

最佳答案

您可以在更新和使用 RETURNING * 之前选择值比较最终查询中的值,如下所示:

t=# create table m1 (i int, e int);
CREATE TABLE
Time: 1.855 ms
t=# insert into m1 select 1,2;
INSERT 0 1
Time: 1.037 ms
t=# begin;
BEGIN
t=# with o as (select * from m1 where i=1)
,u as (update m1 set e=3 where i=1 returning *)
select * from o
join u on o.i = u.i
;
i | e | i | e
---+---+---+---
1 | 2 | 1 | 3
(1 row)

所以你可以把逻辑放在u.e <> o.e上或类似

关于python - 获取实际更新为不同值的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410310/

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