我有一个从旧数据库导入数据的脚本。在某个地方,我遇到了唯一的约束违规。我想修改查询并再次执行它,但它说,“psycopg2.InternalError:当前事务被中止,命令被忽略,直到事务块结束”:
try:
pcur.execute(sql, values)
except psycopg2.IntegrityError:
value = ...
pcur.execute(sql, values)
如何在不切换到自动提交模式的情况下执行此操作?
答案 0 :(得分:1)
灵感来自this answer:
pcur.execute('SAVEPOINT sp1')
try:
pcur.execute(sql, values)
except psycopg2.IntegrityError:
pcur.execute('ROLLBACK TO SAVEPOINT sp1')
value = ...
pcur.execute(sql, values)
else:
pcur.execute('RELEASE SAVEPOINT sp1')