डेटाबेस कनेक्टिविटी के दायरे में, निर्बाध डेटा एक्सेस के लिए लगातार कनेक्शन बनाए रखना महत्वपूर्ण है। MySQLdb, MySQL डेटाबेस के साथ इंटरफेसिंग के लिए एक लोकप्रिय पायथन लाइब्रेरी, कनेक्शन विफलताओं के मामले में ग्राहकों को स्वचालित रूप से पुन: कनेक्ट करने का एक तरीका प्रदान करता है।
पिछले संस्करणों में ऑटो-रीकनेक्ट सक्षम करना
MySQLdb के पुराने संस्करणों में, ऑटो-रीकनेक्ट कार्यक्षमता को mysql_options() फ़ंक्शन के माध्यम से सक्रिय किया जा सकता है, जैसा कि दिखाया गया है नीचे:
my_bool reconnect = 1 mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)
हालांकि, MySQL कनेक्टर/पायथन के आगमन के साथ, अंतर्निहित कार्यान्वयन बदल गया है, और यह दृष्टिकोण अब लागू नहीं है।
के लिए समाधान MySQL कनेक्टर/पायथन
प्राप्त करना MySQL कनेक्टर/पायथन में ऑटो-रीकनेक्शन, कर्सर ऑब्जेक्ट के व्यवहार को अनुकूलित करना आवश्यक है। निम्नलिखित कोड स्निपेट इस दृष्टिकोण को प्रदर्शित करता है:
import MySQLdb class DB: conn = None def connect(self): self.conn = MySQLdb.connect() def query(self, sql): try: cursor = self.conn.cursor() cursor.execute(sql) except (AttributeError, MySQLdb.OperationalError): self.connect() cursor = self.conn.cursor() cursor.execute(sql) return cursor db = DB() sql = "SELECT * FROM foo" cur = db.query(sql) # wait a long time for the Mysql connection to timeout cur = db.query(sql) # still works
स्पष्टीकरण
यह कोड एक कस्टम क्वेरी() विधि को परिभाषित करता है जो कर्सर.execute() विधि को लपेटता है। यदि कोई कनेक्शन त्रुटि होती है (या तो AttributeError या MySQLdb.OperationalError), तो query() विधि डेटाबेस से फिर से जुड़ने का प्रयास करेगी और फिर क्वेरी को फिर से निष्पादित करेगी।
इस ऑटो-रीकनेक्शन तंत्र को कार्यान्वित करके कर्सर ऑब्जेक्ट, आप यह सुनिश्चित कर सकते हैं कि MySQL कनेक्शन रुक-रुक कर खो जाने पर भी आपकी पायथन स्क्रिप्ट काम करना जारी रख सकती है। यह दृष्टिकोण डेटाबेस कनेक्टिविटी बनाए रखने का अधिक मजबूत और विश्वसनीय साधन प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3