pyodbc可能存在线程问题

时间:2016-03-08 14:03:25

标签: python oracle python-2.7 pyodbc

我有一个现有系统,其中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)

任何人都可以通过任何机会对我有所了解吗?如果随后单独运行抛出错误的文件,这似乎不会发生,这使我怀疑这是一个访问问题,其中两个文件一次尝试写入数据库。我希望事实并非如此,因为这可能会完全否定这种做法。

1 个答案:

答案 0 :(得分:1)

我最终意识到问题来自于提交给数据库的SQL的构建方式。

表的ID由“GetNext()”函数生成,该函数从表中获取当前的最大ID并将其递增1。当运行多个文件时 - 这是失败的 - 并且同时尝试使用基于此生成的相同ID。

相关问题