Как 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", чтобы убедиться, что он уже не существует.