J'utilise Python pour écrire dans une base de données PostgreSQL:
sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES ("
sql_string += hundred + ", '" + hundred_slug + "', " + status + ");"
cursor.execute(sql_string)
Mais parce que certaines de mes lignes sont identiques, j'obtiens l'erreur suivante:
psycopg2.IntegrityError: duplicate key value
violates unique constraint "hundred_pkey"
Comment puis-je écrire une instruction SQL 'INSERT sauf si cette ligne existe déjà'?
J'ai vu des déclarations complexes comme celle-ci recommandées:
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
Mais premièrement, est-ce exagéré pour ce dont j'ai besoin, et deuxièmement, comment puis-je exécuter l'un d'eux comme une simple chaîne?