我试图弄清楚如何使用psycopg2执行以下操作:我有一个脚本,它实例化两个到两个不同数据库的连接,每个连接都有自己的游标。目标是从数据库1中的表中删除数据,并将删除的数据写入数据库2。我希望以事务性的方式执行此操作,即执行以下操作:
我遇到的问题是,即使我使用两个独立的连接/游标,每个数据库一个(都关闭了autocommit),只要执行execute with cursor 2,cursor 1就会自动提交
con1 = psycopg2.connect(....)
con1.autocommit= False
cur1 = con1.cursor()
con2 = psycopg2.connect(....)
con2.autocommit= False
cur2 = con2.cursor()
cur1.execute(delete from ... returning)
cur.fetchone().... -> data[]
try:
cur2.execute(insert ... data[])
con2.commit()
con1.commit()
except:
con1.rollback()
con2.rollback()
这里的基本思想是,如果连接2上的insert查询由于任何原因失败,则回滚连接1上的delete查询
任何帮助都将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐