Python SQL 执行许多 DELETE 语句成功运行,没有错误,因为没有找到匹配的记录

问题描述 投票:0回答:1

我有一个文件,其中有 100 条记录需要从表中删除。我正在使用 cx_oracle connect 连接与从 Python 到 Oracle SQL 的executemany 语句,并尝试使用匹配的主键一一删除整个 100 条记录。尽管某些记录不存在于表中,但运行仍成功完成。如果表中不存在任何 1 条记录,我希望语句出错。如何实现这一目标?

我尝试使用executemany -

STNSchemaConnection = cx_oracle.connect(self._oracleUserNameSTN, self._oraclePasswordSTN, cx_oracle.makedsn(self._oracleServer, self._oraclePort, self._oracleSID))               
STNSchemaCursor = STNSchemaConnection.cursor()
STNSchemaCursor.prepare(deleteSqlString)
STNSchemaCursor.executemany(None,dataToDump)
STNSchemaConnection.commit()

deleteSqlString 有删除查询,dataToDump 有数组中的 100 条记录。

删除SqlString =

DELETE FROM SCHEMA.TABLE_NAME
WHERE SOURCE_SYS   = :array_val_1
AND   CONTRACT_NUM = :array_val_2
python sql cursor sql-delete executemany
1个回答
0
投票

自行抛出错误。像这样的事情可以提供帮助。

if STNSchemaCursor.rowcount < len(dataToDump):
    raise RuntimeError(
        f"Error: Expected to affect {len(dataToDump)} rows, but only {STNSchemaCursor.rowcount} rows were affected."
    )
else:
    print(f"Success: All {STNSchemaCursor.rowcount} rows affected as expected.")

© www.soinside.com 2019 - 2024. All rights reserved.