Postgres: INSERT if does not exist already

Я использую 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"

Как я могу написать 'INSERT, если это не строка уже существует 'Оператор 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

Но, во-первых, это лишнее для того, что мне нужно, а во-вторых, как я могу выполнить одно из них как простую строку?

301
задан Erwin Brandstetter 30 July 2014 в 08:44
поделиться