2011-09-18 11 views
7

मैं किसी भी समस्या के साथ चुनिंदा प्रश्न भेज सकता हूं लेकिन जब मैं अद्यतन भेजता हूं और प्रश्न डालता हूं तो यह थ्रेड का इंतजार करना शुरू कर देता है और अब प्रतिक्रिया नहीं देता है। मैं निश्चित नहीं हो सका लेकिन यह एक पाश की तरह लगता है।psycopg2 (सम्मिलित, अद्यतन) लेखन समस्या

मुझे पता है कि हमें परिवर्तन लागू करने के लिए "प्रतिबद्ध()" का उपयोग करना चाहिए, लेकिन यह काम नहीं करता है।

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

मैं पंक्तियों को अपडेट करने के लिए पायथन में थ्रेडिंग का उपयोग करता हूं (प्रत्येक क्वेरी अलग पंक्ति अपडेट करता है)। लॉक किए बिना रिकॉर्ड अपडेट करने का कोई तरीका है? –

+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() 

आपने अपना निष्पादन कथन सही ढंग से प्रारूपित नहीं किया है।

+0

मुझे नहीं पता कि परिवर्तनीय "cur" कहां से आ रहा है ... क्या शर्म की बात है – CheeHow