Как Python PostgreSQL INSERT, если не существует?

У меня есть сценарий Python, который использует адаптер Psycopg; Я анализирую массив JSON и вставляю его в базу данных PostgreSQL.

for item in data["SchoolJSONData"]:
mId = item.get("Id")
mNumofRooms = item.get("NumofRooms")
mFloors = item.get("Floors")

con = None
con = psycopg2.connect("dbname='database' user='dbuser'")
cur = con.cursor()
cur.execute('INSERT INTO Schools(Id, NumofRooms, Floors)VALUES(%s, %s, %s)',(mId, mNumofRooms, mFloors))
con.commit()

Каждый раз, когда я снова запускаю скрипт, я получаю следующее:

psycopg2.IntegrityError: duplicate key value violates unique constraint "schools_pkey"  

Как запустить скрипт вставки, чтобы он игнорировал существующие записи в базе данных?

РЕДАКТИРОВАТЬ: Спасибо за ответы все... Я пытаюсь НЕ перезаписать какие-либо данные, только ДОБАВИТЬ (если ПК еще нет в таблице), и игнорировать любые ошибки. В моем случае я буду только добавлять новые записи, а не обновлять данные.

1 ответ

Нет единого способа решить эту проблему. Также эта проблема имеет мало общего с питоном. Это допустимое исключение, сгенерированное базой данных (не только postgre все базы данных будут делать то же самое).

Но вы можете попробовать - поймать это исключение и продолжить плавно позже. ИЛИ ЖЕ
Вы можете использовать "select count(*), где id = mId", чтобы убедиться, что он уже не существует.

Другие вопросы по тегам