在python中使用cx_Oracle的一个事务中的许多SQL DML语句

时间:2018-06-14 19:52:35

标签: sql python-2.7 cx-oracle

我有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

1 个答案:

答案 0 :(得分:2)

您只需为6个delete语句中的每一个调用cursor.execute(),然后为8个merge语句中的每个语句调用cursor.execute(),然后调用connection.commit()。在执行提交之前,没有其他用户会看到数据更改。但是,如果您的数据库是远程的,那么您可以使用PL / SQL来避免进行15次往返(每次调用cursor.execute()为1次,最后一次调用connection.commit()为1次。