我有一个文件,其中有 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
自行抛出错误。像这样的事情可以提供帮助。
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.")