我正在执行以下代码,但是偶尔会出现重复键违规并导致整个插入操作停止。如何忽略这样的错误并让查询对有效条目执行?
更新2:
我在下面发布了自己的答案,解决了这个问题。它使用Postgres中的新ON CONFLICT语法。
更新1:
在except块内提交时出现了问题,但我发现,如果不这样做,所有其他插入都不会执行,导致以下错误:
为了避免混淆,在try except之后添加了提交。
代码:
query_data = ','.join(cur.mogrify('(%s,%s)', row) for row in data)
insert_q = "INSERT INTO <table> VALUES {0};".format(query_data)
try:
cur.execute(insert_q)
except psycopg2.Error:
self.logger.exception('Database error')
con.commit()
更新2:
我在下面发布了自己的答案,解决了这个问题。它使用Postgres中的新ON CONFLICT语法。
更新1:
在except块内提交时出现了问题,但我发现,如果不这样做,所有其他插入都不会执行,导致以下错误:
ERROR: current transaction is aborted, commands ignored until end of transaction block
为了避免混淆,在try except之后添加了提交。
except
块内提交(commit)呢? - user554546