许多 SQL 个 DML 语句在一个事务中,cx_Oracle 在 python 中

Many SQL DML statements in one transaction with cx_Oracle in python

我有 6 个删除语句(需要按顺序执行),然后是 8 个合并语句。我希望它们都在交易中——这样最终用户将永远不会在 "update" 过程中看到数据的一部分,例如已删除行但尚未合并的表中的数据。

我该怎么做 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

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