psycopg2:语句返回码

时间:2019-09-02 14:22:16

标签: postgresql psycopg2 libpq

我有一个Postgres查询,可以像这样在Python中执行

cursor.execute('INSERT INTO my_data(id, val, bonus) VALUES (1, 2, 3) ON CONFLICT (id) DO UPDATE SET val = ex.val;')

我想知道是否发生了新的插入,以决定调用方的一些后续逻辑。除了尝试进行upsert之前进行额外的阅读外,还有其他方法可以这样做吗?例如,检查是否已触发冲突的返回码/消息

1 个答案:

答案 0 :(得分:2)

执行后,检查cursor.rowcount以获取受影响的行数。

如果为1,则插入一行。如果为0,则更新现有行。