python上的多进程与psycopg2

时间:2017-04-12 10:22:16

标签: python postgresql multiprocessing psycopg2

我正在使用python将许多记录添加到Postgres数据库中,因为我必须插入数百万条记录才能并行化2个函数:

insert_A(cur)  
insert_B(cur) 

其中:

conn=psycopg2.connect(.....)
cur = conn.cursor() 

我尝试了一个解决方案,我在另一篇文章中找到了堆栈溢出,如:

result1= pool.apply_async(insert_A, cur)  
result2= pool.apply_async(insert_B, cur)  
answer1=result1.get(timeout=15)  
answer2=result2.get(timeout=15)  

但是我收到了这个错误: 追溯(最近的呼叫最后):
  文件“test.py”,第387行,在     ANSWER1 = result1.get(超时= 15)
  文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py”,第558行,在获取中     提高self._value
psycopg2.InterfaceError:游标没有连接

有人可以帮我吗? :(

2 个答案:

答案 0 :(得分:3)

最后我用这种方式解决了:

"additionalProperties": false 

并在函数内部创建连接,而不是在函数外部创建它(并将连接作为参数传递)...

答案 1 :(得分:2)

this issue报告时,psycopg2无法在单独的进程上使用连接,必须在工作进程中建立连接。