2012-02-21 13 views
1

複数のスレッド間で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 

、のような出力を得ますか?

+0

インデントを修正してください。最初にこのコメントのすぐ上にある「編集」リンクをクリックします。次に、コードを正しく入力します。次にすべてを選択して、入力ボックスの上部に表示される '{}'ボタンを押します。これは、すべての行を4つのスペースでインデントし、正しい書式のコードを生成します。私はあなたのためにそれをするだろうが、私は正しいインデントが何であるかは分からない。 – senderle

+0

チップをありがとう。私はコードを修正した – Phani

答えて

0

最新のpsycopg2バージョンにはバグはありません。2.4.2で修正されている可能性があります。

+0

ええ。私は以前のバージョン(2.2.1)を使用していました – Phani

+0

報告されているバグは2.4.2で修正されましたが、その原因はそれほど深刻ではありません。 2.4.5でリリースされるように修正されました。レポートとテストをありがとうございました。 – piro

関連する問題