【发布时间】:2018-12-17 09:33:19
【问题描述】:
我正在尝试在多个线程中使用 pyodbc 连接。我收到以下错误:Connection is busy with results for another command (0) (SQLExecDirectW)')。我也尝试设置MultipleActiveResultSets=yes; 并得到相同的结果。
我真的不想为每个线程或查询创建一个连接。我也不想使用锁来序列化来自所有线程的查询。
我首先使用驱动程序“SQL Server”,然后迁移到“SQL Server Native Client 11.0”,但没有成功。
有什么建议吗?
【问题讨论】:
-
您是否反对让连接等待被释放,然后在另一个线程中再次使用它?
-
@JoshuaSchlichting 是的,这就是我不想用锁序列化线程的意思。不过我可能别无选择。
-
是的,我看不出您还有什么其他选择。我不知道您的限制为何如此,但我会选择为每个线程创建一个新连接。
-
谢谢你的建议,约书亚。
-
从 ODBC 驱动程序的名称看来,您是在 Windows 上执行此操作,并且 Windows ODBC 默认为 SQL Server 驱动程序启用连接池,因此可能不一定为每个线程打开单独的连接像你担心的那么贵。
标签: python sql multithreading pyodbc