पाइथॉन MySQL इन्सर्ट ऑपरेशंस में समस्या निवारण
पाइथॉन में, MySQL डेटाबेस के साथ इंटरैक्ट करने के लिए MySQL API का उपयोग करके, रिकॉर्ड डालने में बाधाएं आ सकती हैं। यह लेख ऐसे ही एक मुद्दे को संबोधित करता है जहां सही कार्यान्वयन के बावजूद रिकॉर्ड सम्मिलित करने में विफल रहते हैं।
प्रदान किया गया कोड डेटाबेस से एक कनेक्शन स्थापित करता है और 'दस्तावेज़' तालिका में एक रिकॉर्ड डालने का प्रयास करता है। हालाँकि, सम्मिलित कार्रवाई विफल हो जाती है। इस समस्या को हल करने के लिए, डेटाबेस लेनदेन के महत्व को समझना महत्वपूर्ण है।
MySQL में, डेटाबेस में परिवर्तन लेनदेन के माध्यम से प्रबंधित किए जाते हैं। लेन-देन तब शुरू होता है जब कनेक्शन स्थापित होता है और तब समाप्त होता है जब कनेक्शन बंद हो जाता है या जब कमिट या रोलबैक ऑपरेशन को स्पष्ट रूप से बुलाया जाता है। लेन-देन के दौरान डेटाबेस में किया गया कोई भी परिवर्तन लेन-देन प्रतिबद्ध होने तक स्थायी नहीं होता है।
प्रदान किए गए कोड में, इन्सर्ट ऑपरेशन सफलतापूर्वक निष्पादित होता है, लेकिन कनेक्शन बंद होने से पहले डेटाबेस में परिवर्तन प्रतिबद्ध नहीं होते हैं। (db.close() का उपयोग करके)। लेन-देन किए बिना, कनेक्शन बंद होने पर इन्सर्ट ऑपरेशन खारिज कर दिया जाता है।
इस समस्या को हल करने और यह सुनिश्चित करने के लिए कि इन्सर्ट ऑपरेशन सफल है, आपको डेटाबेस कनेक्शन बंद करने से पहले db.commit() पर एक कॉल शामिल करनी चाहिए। . यह क्रिया लेन-देन करती है, जिससे सम्मिलित रिकॉर्ड डेटाबेस में बना रहता है।
यहां संशोधित कोड है जिसमें कमिट ऑपरेशन शामिल है:
db = MySQLdb.connect("localhost", "root", "padmaramulu", "pdfsearch")
cursor = db.cursor()
# cursor.execute("""CREATE TABLE IF NOT EXISTS documents (docid INT NOT NULL ,PRIMARY KEY(docid),docname CHAR(30)) engine=innodb""")
temp = "hello"; number = 2;
cursor.execute('insert into documents(docid,docname) values("%d","%s")' % (number, temp))
db.commit()
db.close()
db.commit() कॉल को शामिल करने से, लेनदेन के दौरान किए गए परिवर्तन, सम्मिलित ऑपरेशन सहित, डेटाबेस के लिए प्रतिबद्ध होते हैं और स्थायी हो जाते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3