我正在使用Python写入postgres数据库:sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES ("sql_string += hundred + ", '" + hundred_slug + "', " + status + ");"cursor.execute(sql_string)但是由于我的某些行是相同的,因此出现以下错误:psycopg2.IntegrityError: duplicate key value violates unique constraint "hundred_pkey"如何编写“除非此行已存在,否则请插入” SQL语句?我看过这样的复杂语句:IF EXISTS (SELECT * FROM invoices WHERE invoiceid = '12345')UPDATE invoices SET billed = 'TRUE' WHERE invoiceid = '12345'ELSEINSERT INTO invoices (invoiceid, billed) VALUES ('12345', 'TRUE')END IF但是,首先,这是否满足我的需要,其次,如何将其中一个作为简单的字符串执行?
3 回答
HUWWW
TA贡献1874条经验 获得超12个赞
Postgres 9.5(自2016年1月7日发布)提供了一个“ upsert”命令,也称为INSERT的ON CONFLICT子句:
INSERT ... ON CONFLICT DO NOTHING/UPDATE
它解决了使用并发操作时可能遇到的许多细微问题,其他一些答案也提出了这些问题。
添加回答
举报
0/150
提交
取消