我有一个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之前进行额外的阅读外,还有其他方法可以这样做吗?例如,检查是否已触发冲突的返回码/消息
答案 0 :(得分:2)
执行后,检查cursor.rowcount
以获取受影响的行数。
如果为1,则插入一行。如果为0,则更新现有行。