"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन लूप में बाद की क्वेरीज़ MySQL डेटाबेस से समान डेटा क्यों लौटाती हैं?

पायथन लूप में बाद की क्वेरीज़ MySQL डेटाबेस से समान डेटा क्यों लौटाती हैं?

2024-11-10 को प्रकाशित
ब्राउज़ करें:830

Why Do Subsequent Queries in a Python Loop Return the Same Data from a MySQL Database?

पायथन क्वेरीज़ का उपयोग करके MySQL से डायनामिक डेटा पुनर्प्राप्त करना

जब समय-समय पर पायथन से तेजी से बदलते MySQL डेटाबेस को क्वेरी करते हैं, तो आप लूप-आधारित की उम्मीद कर सकते हैं नवीनतम डेटा लगातार प्राप्त करने के लिए दृष्टिकोण। हालाँकि, आपको ऐसी स्थिति का सामना करना पड़ सकता है जहां एक ही डेटा बार-बार लौटाया जाता है।

यह समस्या MySQL के डिफ़ॉल्ट आइसोलेशन स्तर, रिपीटेबल रीड से उत्पन्न होती है। इस स्तर के साथ, लेन-देन के भीतर पढ़ने वाले डेटा के स्नैपशॉट का उपयोग करते हैं क्योंकि यह लेन-देन की शुरुआत में मौजूद था। उसी लेनदेन के भीतर आने वाली क्वेरीज़ इसे अपडेट करने के बजाय इस स्नैपशॉट से पढ़ी जाएंगी।

इसे हल करने के लिए, आपको प्रत्येक क्वेरी के बाद कनेक्शन करना होगा, यह सुनिश्चित करते हुए कि अगला लेनदेन नवीनतम डेटा पुनर्प्राप्त करेगा। यहां बताया गया है कि आप अपने पायथन कोड को कैसे संशोधित कर सकते हैं:

# Main loop
while True:

    # SQL query
    sql = "SELECT * FROM table"

    # Read the database, store as a dictionary
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)

    # Store data in rows
    myresult = mycursor.fetchall()

    # Transfer data into list
    for row in myresult:
        myList[int(row["rowID"])] = (row["a"], row["b"], row["c"])

        print(myList[int(row["rowID"])])

    # Commit !
    mydb.commit()
    print("---")
    sleep (0.1)

प्रत्येक क्वेरी के बाद mydb.commit() जोड़कर, आप MySQL को लेनदेन करने और स्नैपशॉट को अपडेट करने के लिए मजबूर करते हैं। यह बाद के प्रश्नों को नवीनतम डेटा तक पहुंचने की अनुमति देता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3