我有6个删除语句(需要按顺序执行),然后是8个合并语句。我希望他们都参与交易 - 因此最终用户永远不会看到数据部分通过“更新”过程,例如来自已删除行但尚未合并的表的数据。
我该怎么做这个python和cx_Oracle?
with cx_Oracle.connect("{u}/{p}@{db}".format(u=creds["user"], p=creds["password"], db=creds["server"])) \
as connection:
cursor = connection.cursor()
# ?
Python 2.7
cx_Oracle 5.1.2
答案 0 :(得分:2)
您只需为6个delete语句中的每一个调用cursor.execute(),然后为8个merge语句中的每个语句调用cursor.execute(),然后调用connection.commit()。在执行提交之前,没有其他用户会看到数据更改。但是,如果您的数据库是远程的,那么您可以使用PL / SQL来避免进行15次往返(每次调用cursor.execute()为1次,最后一次调用connection.commit()为1次。