2015-05-24 8 views
9

मैं निम्नलिखित कोड के साथ पायथन के (3.4) MySQL मॉड्यूल का उपयोग कर एक स्थानीय MySQL डेटाबेस पर क्वेरी करने के लिए कोशिश कर रहा हूँ:MySQL क्यों निष्पादित करेगा कोई नहीं?

class databases(): 

    def externaldatabase(self): 

    try: 
    c = mysql.connector.connect(host="127.0.0.1", user="user", 
           password="password", database="database") 
    if c.is_connected(): 
      c.autocommit = True 
     return(c) 
    except: 
     return(None) 
    d = databases().externaldatabase() 
    c = d.cursor() 
    r = c.execute('''select * from tbl_wiki''') 
    print(r) 
> Returns: None 

जहां तक ​​मेरा बता सकता हूँ, कनेक्शन सफल रहता है, डेटाबेस कई पंक्तियों से बना है लेकिन क्वेरी हमेशा किसी भी प्रकार का भुगतान नहीं करती है।

MySQL निष्पादित फ़ंक्शन लौटने का कोई उदाहरण नहीं है?

+1

'c.execute() 'कुछ भी वापस नहीं करता है जब तक कि आप' बहु = सही 'विकल्प का उपयोग न करें। फिर यह एक पुनरावर्तक देता है जो आपको एकाधिक प्रश्नों में प्रत्येक क्वेरी के परिणामों के माध्यम से कदम उठाने देता है। – Barmar

+1

आम तौर पर आप क्वेरी से परिणाम प्राप्त करने के लिए कर्सर पर विधियों को कॉल करते हैं, उदा। सभी परिणामों को प्राप्त करने के लिए 'c.fetchone()' एक पंक्ति प्राप्त करने के लिए, 'c.fetchall() '। – Barmar

+0

http://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor.html – Barmar

उत्तर

8

क्वेरी निष्पादन के पास कोई वापसी मूल्य नहीं है।

पैटर्न आप पालन करने की आवश्यकता है:

cursor creation; 
cursor, execute query; 
cursor, *fetch rows*; 

या अजगर में:

c = d.cursor() 

c.execute(query) # selected rows stored in cursor memory 

rows = c.fetchall() # get all selected rows, as Barmar mentioned 
for r in rows: 
    print(r) 

इसके अलावा कुछ db मॉड्यूल का उपयोग कर आप कर्सर पुनरावृति करने की अनुमति के लिए ... पैटर्न में, लेकिन mysql के बारे में तीन बार जांचें।

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