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 回答