Estoy usando Python para escribir en una base de datos postgres:
sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES ("
sql_string += hundred + ", '" + hundred_slug + "', " + status + ");"
cursor.execute(sql_string)
Pero debido a que algunas de mis filas son idénticas, aparece el siguiente error:
psycopg2.IntegrityError: duplicate key value
violates unique constraint "hundred_pkey"
¿Cómo puedo escribir una instrucción SQL 'INSERT a menos que esta fila ya exista'?
He visto declaraciones complejas como esta recomendadas:
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
Pero, en primer lugar, ¿es esto excesivo para lo que necesito y, en segundo lugar, cómo puedo ejecutar uno de esos como una cadena simple?