बड़े परिणाम सेट के लिए MySQLDB SSCursor का कुशल उपयोग
सैकड़ों हजारों या अधिक पंक्तियों वाले विशाल परिणाम सेट को संभालते समय, कुशल मेमोरी प्रबंधन बन जाता है महत्वपूर्ण। इस प्रकार, MySQLDB SScursor (स्ट्रीमिंग सेलेक्ट कर्सर) मेमोरी खपत को कम करने के लिए एक उपयुक्त उपकरण के रूप में उभरता है।
बेस कर्सर बनाम Fetchall() के बीच अंतर
आम धारणा के विपरीत, एसएसकर्सर से फ़ेचॉल() निष्पादित करने पर बेस कर्सर की तुलना में अधिक मेमोरी की खपत होती है। ऐसा इसलिए है क्योंकि एक SScursor सर्वर से क्रमिक रूप से परिणाम प्राप्त करता है, जबकि Fetchall() पूरे परिणाम सेट को मेमोरी में डाउनलोड करता है। इसलिए, मेमोरी-बाधित परिदृश्यों के लिए फ़ेचॉल () का उपयोग करना प्रतिकूल हो जाता है। पंक्ति के आधार पर, निम्न विधि नियोजित करें:
आयात MySQLdb.cursors कनेक्शन=MySQLdb.connect( होस्ट = "द होस्ट", उपयोगकर्ता = "द उपयोगकर्ता", passwd='दपासवर्ड',db='thedb', कर्सरक्लास = MySQLdb.cursors.SSCursor) कर्सर=कनेक्शन.कर्सर() कर्सर.निष्पादित(क्वेरी) कर्सर में पंक्ति के लिए: print(row)
यह विधि न्यूनतम संसाधनों का उपभोग करते हुए, संपूर्ण सामग्री को मेमोरी में संग्रहीत किए बिना परिणाम सेट पर दोहराती है।import MySQLdb.cursors
connection=MySQLdb.connect(
host="thehost",user="theuser",
passwd="thepassword",db="thedb",
cursorclass = MySQLdb.cursors.SSCursor)
cursor=connection.cursor()
cursor.execute(query)
for row in cursor:
print(row)
WHERE क्लॉज निर्दिष्ट करके या LIMIT का उपयोग करके परिणाम सेट का आकार सीमित करें।सर्वर-साइड कर्सर का उपयोग करें जब संभव है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3