2015-05-24 157 views
9

我試圖使用Python的(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()'不會返回任何東西,除非你使用'multi = True'選項。然後它返回一個迭代器,讓您逐步瀏覽多個查詢中的每個查詢的結果。 – 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*; 

或者在python:

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) 

也有一些數據庫模塊允許你遍歷光標使用了...在模式,但三重檢查關於MySQL。

相關問題