【发布时间】:2016-06-22 12:31:24
【问题描述】:
我有一个现有系统,其中 oracle 数据库由一系列 Python 文件填充元数据。大约有 500 个,当前一次运行一个的方法大约需要一个小时才能完成。
为了减少这个运行时间,我尝试线程化单个文件,同时运行它们,但是我得到了一个错误
pyodbc.IntegrityError: ('23000', '[23000] [Oracle][ODBC][Ora]ORA-00001: unique constraint (DB.PK_TABLE_NAME) violated\n (1) (SQLExecDirectW)')
回溯到以下调用:
File "C:\file.py", line 295, in ExecuteSql
cursor.execute(Sql)
任何人都可以为我解释一下吗?如果随后单独运行引发错误的文件,则似乎不会发生这种情况,这使我怀疑这是一个访问问题,其中两个文件试图一次写入数据库。我希望情况并非如此,因为这可能会完全否决这种方法。
【问题讨论】:
-
您似乎遇到了标识符冲突。您的 INSERT 是否包含在事务中?您是否在多个线程之间共享单个连接或游标?
-
@FlipperPA 每个线程都有自己的连接。它们没有包含在交易中(这是一种非常复杂的方法,我正在尝试一点一点地改进)
标签: python oracle python-2.7 pyodbc