在python中使用多线程写入db2时出错
我正在使用ibm_db python库将数据插入db2。 只要一根线,一切都很好。当我开始使用多线程来加速对db2的写入时,我开始出现一个错误: 异常:[IBM][CLI驱动程序]SQL0902C发生系统错误。 无法处理后续SQL语句。IBM软件支持 原因代码:“”。SQLSTATE=58005 SQLCODE=-902 我的单线程代码是这样的:在python中使用多线程写入db2时出错,python,multithreading,db2,Python,Multithreading,Db2,我正在使用ibm_db python库将数据插入db2。 只要一根线,一切都很好。当我开始使用多线程来加速对db2的写入时,我开始出现一个错误: 异常:[IBM][CLI驱动程序]SQL0902C发生系统错误。 无法处理后续SQL语句。IBM软件支持 原因代码:“”。SQLSTATE=58005 SQLCODE=-902 我的单线程代码是这样的: def process_user(user): .... sqlstr = "insert into ..." ibm_db.exe
def process_user(user):
....
sqlstr = "insert into ..."
ibm_db.exec_immediate(db2conn, sqlstr)
return 1
for user in users:
n += process_user(user)
我使用多线程的代码是:
from multiprocessing import Pool
def process_user(user):
....
sqlstr = "insert into ..."
ibm_db.exec_immediate(db2conn, sqlstr)
return 1
pool = Pool(20)
nusers = len(pool.map(process_user, users))
我的问题是,使用多个线程将数据插入db2的正确方法是什么?看起来您可能正在为所有线程共享一个
db2conn
。您是否尝试为每个线程提供自己的连接?为每个线程创建pconnection并检查数据库是否没有任何限制(连接数)@user212514是的,我为所有线程共享一个db2conn。我原以为它可以支持多线程,但从你的评论来看它不支持。谢谢,将尝试为每个线程提供自己的连接。@ValeriySolovyov谢谢,将这样做。似乎单个连接不支持多线程。可能您正在为所有线程共享一个db2conn
。您是否尝试为每个线程提供自己的连接?为每个线程创建pconnection并检查数据库是否没有任何限制(连接数)@user212514是的,我为所有线程共享一个db2conn。我原以为它可以支持多线程,但从你的评论来看它不支持。谢谢,将尝试为每个线程提供自己的连接。@ValeriySolovyov谢谢,将这样做。似乎单个连接不支持多线程。