मैं psycopg2डेटाबेस API का उपयोग करके PostgreSQL 9.3 के साथ कुछ काम कर रहा हूं ।
मेरे पास डीबी एपीआई न्यूनतम अलगाव स्तर ("ऑटोकॉमिट" मोड) में सेट है, और मैं सीधे एसक्यूएल के माध्यम से अपने लेनदेन का प्रबंधन कर रहा हूं। उदाहरण:
cur = self.conn.cursor()
cur.execute("BEGIN;")
cur.execute("SELECT dbId, downloadPath, fileName, tags FROM {tableName} WHERE dlState=%s".format(tableName=self.tableName), (2, ))
ret = cur.fetchall()
cur.execute("COMMIT;")
मूल रूप से, क्या लेनदेन cur.execute("BEGIN;")केवल उस कर्सर तक सीमित द्वारा शुरू किया गया है, या यह पूरे कनेक्शन के लिए है ( self.conn.cursor())?
कुछ अधिक जटिल चीजें जो मैं कई अलग-अलग डेटाबेस संचालन शामिल कर रहा हूं, कि मैं तार्किक रूप से कार्यों में टूट जाता हूं। चूँकि यह सब एक ऐसे वर्ग में है जिसका सदस्य के रूप में संबंध है, इसलिए यह प्रत्येक फ़ंक्शन के भीतर कर्सर बनाने के लिए बहुत अधिक सुविधाजनक है। हालाँकि, मुझे यकीन नहीं है कि लेन-देन के कामों के भीतर अभिशाप कैसे पैदा होते हैं ।
मूल रूप से, यदि लेन-देन प्रति-कनेक्शन है, तो मैं लेन-देन के भीतर बहुत सारे कर्सर बना सकता हूं। यदि वे प्रति-कर्सर हैं, तो इसका मतलब है कि मुझे हर जगह कर्सर पास करना होगा। यह किसका है?
प्रलेखन इस पर स्पर्श नहीं करता है, हालांकि आप जिस तथ्य को कॉल कर सकते हैं connection.commit()वह मुझे काफी आश्वस्त करता है कि लेनदेन-नियंत्रण प्रति कनेक्शन है।