2011-09-18 56 views
7

我可以給select查詢任何問題,但是當我發送更新和插入查詢,它開始等待線程,不要再做出迴應。我不能確定,但​​它看起來像一個循環。psycopg2(INSERT,UPDATE)寫作問題

我知道我們必須使用「提交()」爲應用而變化,但不起作用。

這裏是我的代碼:

import psycopg2 
conn = psycopg2.connect("dbname='test' user='postgres' host='localhost' password='xx"); 
cursor = conn.cursor() 
cursor.execute("UPDATE recording SET rank = 10 WHERE id = 10;") 
conn.commit() 
cursor.close() 
+0

我有同樣的問題我插入查詢。 –

回答

-4

問題是psycopg2不具備線程支持。

4

這是最有可能在數據庫中的鎖,用線/進程嘗試更新相同的記錄。

+0

我在Python中使用線程來更新行(每個查詢更新不同的行)。有沒有辦法更新記錄而不鎖定? –

+0

這取決於你必須做什麼。使用自動提交事務將確保有短的事務處理,並且鎖定的進程很快會再次運行,但這取決於預期的效果。 – piro

14
import psycopg2 
conn = psycopg2.connect(database="dbasename",user="username",password='your_password',host='web_address',port='your_port') 
cursor = conn.cursor() 
cursor.execute("UPDATE table_name SET update_column_name=(%s) WHERE ref_column_id_value = (%s)", ("column_name","value_you_want_to_update",)); 
conn.commit() 
cursor.close() 

您沒有正確格式化您的execute語句。

+0

我看不出哪裏是變量「小人」來自哪裏...什麼是恥辱 – CheeHow