प्रदान करता है मैंने एक पायथन डिमन लिखा है जो लगातार एक mysql डेटाबेस का चुनाव करता है। यह ठीक काम करता है जब मैं लगातार कनेक्ट और प्रश्नों के बीच डेटाबेस से पुन: कनेक्ट इस प्रकार है:पायथन MySQLdb खाली चयन क्वेरी हालांकि मैन्युअल क्वेरी निष्पादन परिणाम
def connect(self):
self.connection = MySQLdb.connect(...)
self.cursor = self.connection.cursor()
return self.cursor
def disconnect(self): ...
self.cursor.close()
self.connection.close()
def getData(); ....
sqlcmd = """SELECT ...."""
self.cursor.execute (sqlcmd % (params))
result = self.cursor.fetchall()
return result
if __name__ == "__main__":
db = prepaid_db.Database()
while 1:
dbConnection = db.connect()
data = db.getData()
... do stuff
db.disconnect
लेकिन जब मैं डेटाबेस कनेक्शन खुला रखने की कोशिश (नीचे के रूप में) मैं यह है, जबकि, एक खाली क्वेरी मिल भले ही, चल रहा है मैं मैन्युअल रूप से डीबी से पूछताछ कर सकता हूं, इसे एक ही प्रश्न दे सकता हूं और परिणाम प्राप्त कर सकता हूं।
if __name__ == "__main__":
db = prepaid_db.Database()
dbConnection = db.connect()
while 1:
data = db.getData()
... do stuff
db.disconnect
मैं समझने के लिए क्यों यह इस करना होगा सब कुछ कोशिश की है:
- विकलांग क्वेरी कैश और मामले mysql कैश में प्रश्न में जोड़ा यादृच्छिक एक्स = एक्स मिलती-जुलती क्वेरी से उलझन में था
- सक्षम mysql क्वेरी लॉगिंग: क्वेरी के माध्यम से आता है लेकिन अभी भी एक खाली सेट
- database.connect को cursor.connect ले जाया देता है, और GetData(), कोई फर्क नहीं
मुझे एक सुराग पसंद आएगा जो मुझे समझ में नहीं आ रहा है।
'def getData() में अर्धविराम; 'एक कोलन होना चाहिए। – unutbu
क्या 'self -ursor.fetchall() '' while-loop' के माध्यम से पहली बार' कोई नहीं ', या कई पास के बाद? – unutbu
- हाँ कोलन पर, क्षमा करें, सरल टाइपो –