0

Psycopg アダプターを使用している Python スクリプトがあります。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"  

データベース内の既存のエントリを無視するように挿入スクリプトを実行するにはどうすればよいですか?

編集:すべての返信に感謝します...データを上書きせず、追加のみ(PKがまだテーブルにない場合)を試み、エラーを無視します。私の場合、新しいエントリを追加するだけで、データを更新することはありません。

4

1 に答える 1

0

この問題を解決する唯一の方法はありません。同様に、この問題は Python とはほとんど関係がありません。これは、データベースによって生成された有効な例外です (postgre だけでなく、すべてのデータベースが同じことを行います)。

しかし、試すことができます - この例外をキャッチして、後でスムーズに続行してください。または
、「select count(*) where id = mId」を使用して、まだ存在しないことを確認できます。

于 2016-01-25T19:55:50.677 に答える