如果不存在,如何 Python PostgreSQL 插入



我有一个使用 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"  

如何运行插入脚本,使其忽略数据库中的现有条目?

编辑:感谢您的回复...我试图不覆盖任何数据,只覆盖 ADD(如果表中尚未包含 PK),并忽略任何错误。就我而言,我只会添加新条目,永远不会更新数据。

没有单一的方法可以解决这个问题。同样,这个问题与python关系不大。这是数据库生成的有效异常(不仅仅是 postgre 所有数据库都会做同样的事情)。

但是您可以尝试 - 捕获此异常并稍后顺利继续。 或
您可以使用"选择 count(*) 其中 id = mId"来确保它不存在。

最新更新