पाइथन से MySQL पर क्वेरीज़ समान डेटा प्रदान करती हैं
डायनामिक डेटा को पुनः प्राप्त करने के लिए पायथन से MySQL डेटाबेस को बार-बार क्वेरी करना एक चुनौती है। यह ज्ञात है कि केवल लूप में एक क्वेरी के माध्यम से पुनरावृत्ति करना डेटाबेस से ताजा डेटा लाने के लिए पर्याप्त नहीं है।
आपका प्रदत्त कोड इस समस्या का उदाहरण देता है:
for i in range(listSize):
#...
mycursor = mydb.cursor(dictionary=True)
mycursor.execute(sql)
#...
फ़ेचॉल, फ़ेचमैनी और फ़ेचऑन का उपयोग करने के प्रयासों के बावजूद, परिणाम स्थिर रहते हैं।
समाधान: कनेक्शन प्रतिबद्ध करना
इसे हल करने के लिए, प्रत्येक क्वेरी निष्पादन के बाद कनेक्शन की प्रतिबद्धता होनी चाहिए। यह क्रिया चालू लेन-देन को समाप्त करती है और एक नया लेन-देन आरंभ करती है, जिससे अगली क्वेरी पिछले लेन-देन के दौरान किए गए परिवर्तनों का पता लगाने में सक्षम हो जाती है।
while True:
#...
mycursor = mydb.cursor(dictionary=True)
mycursor.execute(sql)
#...
mydb.commit()
#...
आइसोलेशन लेवल और रिपीटेबल रीड डिफॉल्ट
यह अवधारणा आइसोलेशन लेवल में निहित है। डिफ़ॉल्ट रूप से, MySQL InnoDB के लिए रिपीटेबल रीड का उपयोग करता है। इसका तात्पर्य यह है कि लेन-देन के भीतर, बाद की रीडिंग लेन-देन के प्रारंभिक रीड द्वारा स्थापित स्नैपशॉट को बनाए रखेगी। इसलिए, प्रतिबद्धता के बिना, बाद की क्वेरीज़ में कोई भी परिवर्तन शामिल नहीं होगा।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3