Postgres:如果尚不存在,请插入

我正在使用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'

ELSE

INSERT INTO invoices (invoiceid, billed) VALUES ('12345', 'TRUE')

END IF

但是,首先,这是否满足我的需要,其次,如何将其中一个作为简单的字符串执行?


当年话下
浏览 770回答 3
3回答

HUWWW

Postgres 9.5(自2016年1月7日发布)提供了一个“ upsert”命令,也称为INSERT的ON CONFLICT子句:INSERT ... ON CONFLICT DO NOTHING/UPDATE它解决了使用并发操作时可能遇到的许多细微问题,其他一些答案也提出了这些问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python