2012-10-24 11 views
6

संपादित में मर जाता है: यह समस्या अविश्वसनीय है। अब मैं time.sleep (0.01) के साथ एक कष्टप्रद प्रिंट फ़ंक्शन को प्रतिस्थापित करने में कामयाब रहा हूं, लेकिन पृथ्वी पर क्यों मुझे धीमे निष्पादन समय से लाभ होना चाहिए मेरे बाहर है।MySql कनेक्टर अजगर

मैं अजगर 3.23 के लिए MySQL 1.0.7 कनेक्टर में मेरी कर्सर पुनरावृत्ति में एक समस्या है।

जब तक प्रिंट() प्रत्येक यात्रा के परिणाम मैं निम्न त्रुटि उठाया हो (जो दोनों मूर्खतापूर्ण और समय लगता है):

raise errors.InterfaceError(errno=2013) mysql.connector.errors.InterfaceError: 2013: Lost connection to MySQL server during query

किसी भी विचार?

कोड तुच्छ thusfar है:

self.config = {'user': user,'password': password,'host': host,'database':  
database,'raise_on_warnings': True} 

self.data = [] 
self.clickcnx = mysql.connector.connect(**self.config) 
self.clickcursor = self.clickcnx.cursor() 

query = "SELECT table1, table2, table3 FROM `db`-tables;" 
self.clickcursor.execute(query) 
for item in self.clickcursor: 
    print(item)  #this is the strange line that I need! 
    self.data.append(item) 
self.clickcnx.close() 
+3

कृपया इसे ट्रिगर करने वाला कोड पोस्ट करें। –

+1

मेरे मामले में, "समाधान" time.sleep था (0.000001) (यह सबसे छोटा नींद का समय था जो मुझे मिल सकता था जो त्रुटि को ट्रिगर नहीं करेगा)। वास्तव में विचित्र, लेकिन इसे पोस्ट करने के लिए धन्यवाद। क्या आपको कभी भी उचित समाधान मिला? – Haakon

उत्तर

1

आप हिस्सा है जहाँ आप वास्तव में परिणाम लाने याद कर रहे हैं, तो आप सिर्फ कर्सर कदम रख रहे हैं।

इस संस्करण का प्रयास करें:

query = "SELECT table1, table2, table3 FROM `db`-tables;" 
self.clickcursor.execute(query) 
results = self.clickcursor.fetchall() 
for item in results: 
    print(item)  #this is the strange line that I need! 
    self.data.append(item) 
self.clickcnx.close() 
+0

देखभाल के लिए धन्यवाद !! यह अभी तक काम नहीं कर रहा है :(लेकिन मैं इसे थोड़ी देर के लिए काम करूंगा ... – user1597652

+0

आपको एक ही त्रुटि मिलती है? –

+0

सटीक एक ही त्रुटि ... बहुत अजीब है। यह वास्तव में आपके द्वारा सुझाए गए परिवर्तनों से भी बदतर हो जाता है, क्योंकि अब विचित्र प्रिंट() बयान नहीं रह गया है में मदद करता है मैं एसक्यूएल-देवताओं ... – user1597652

1

मैं 1.0.7 के साथ एक ही मुद्दा था। एक समय जोड़ना। नींद() इसे ठीक कर दिया। तब मैंने 1.0.10 तक अपग्रेड किया और नींद को हटा दिया। यह भी ठीक काम करता है।

तो समाधान लगता है:

pip install --upgrade mysql-connector-python 

आप sudo उपयोग करने की आवश्यकता हो सकती है।

0

मुझे MySQL कनेक्टर के साथ समस्या थी। मैंने बुरहान खालिद के जवाब की कोशिश की, लेकिन यह काम नहीं किया। मैं ग्रुप बाय स्टेटमेंट जोड़कर अपनी समस्या का समाधान करने में सक्षम था।

मूल क्वेरी:

SELECT 
    a.ID, 
    a.UID, 
    g.GroupId, 
FROM Accounts a 
    LEFT JOIN Profile p ON p.ID = a.ID 
    LEFT JOIN Group g ON g.GroupId = p.GroupId 
WHERE 
    a.UID IS NOT NULL 
    AND a.Active = 1 
    AND a.Type = 1; 

क्वेरी कि रिटर्न मूल रूप में एक ही परिणाम:

SELECT 
    a.ID, 
    a.UID, 
    g.GroupId, 
FROM Accounts a 
    LEFT JOIN Profile p ON p.ID = a.ID 
    LEFT JOIN Group g ON g.GroupId = p.GroupId 
WHERE 
    a.UID IS NOT NULL 
    AND a.Active = 1 
    AND a.Type = 1 
GROUP BY 
    a.UID; 

फर्क सिर्फ इतना है दूसरा प्रश्न एक InterfaceError फेंक नहीं करता है (2013) । मेरी क्वेरी लगभग 250,000 पंक्तियां लौटाती है। मैंने इनमें से प्रत्येक प्रश्न और मेरी आश्चर्य के बारे में एक व्याख्या की, दूसरी क्वेरी में पहले की तुलना में अधिक अवधि (अवधि) लगती है क्योंकि यह परिणाम अस्थायी तालिका में संग्रहीत करता है, लेकिन fetch time 6.00 से 0.50 तक चला जाता है!

agregator द्वारा एक समूह जोड़ें और देखते हैं कि अगर आपकी समस्या नहीं सुलझती की कोशिश करें। बेशक आपको यह सुनिश्चित करना होगा कि आपके परिणाम समान हैं। मैं एक टेबल वैल्यू पर ग्रुप बाय करने का सुझाव देता हूं जो आपको पता चलेगा कि यह अद्वितीय होगा।

संबंधित मुद्दे