Psycopg2并发问题

时间:2012-02-21 19:50:52

标签: python psycopg2

我正在尝试在多个线程之间共享psycopg2连接。正如文档中提到的,每当我在新线程中使用它时,我都是通过从共享连接创建新的游标对象来实现的。

def delete(conn):
    while True:
        conn.commit()

def test(conn):    
    cur = conn.cursor()
    thread.start_new_thread(delete,(conn,))
    i = 1
    while True:
        cur.execute("INSERT INTO mas(taru,s) values (2,%s)",(i,))
        print i
        i = i +1
        conn.commit()

运行后,我得到输出,

1
2
...
98  
99
Traceback (most recent call last):
File "postgres_test_send.py", line 44, in <module>
   cur.execute("INSERT INTO mas(taru,s) values (2,%s)",(i,))
psycopg2.InternalError: SET TRANSACTION ISOLATION LEVEL must be called before any query

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

该错误不在最近的psycopg2版本中:它可能已在2.4.2中修复。