2011-12-24 38 views
4

MySQL數據庫連接上執行的查詢語句後遊標,我執行:Python中,MySQL和該獲取的地圖

rows = cursor.fetchall() 

這給數組的數組。我想要一個字典數組,其中每個字典都從我的表的請求的列名中獲取鍵,並將表中的值關聯起來。

我該怎麼做?

+2

它給出了一個元組列表。陣列不參與。也沒有*地圖*。那些是口號; – nosklo 2011-12-24 10:35:00

回答

14

那麼,你忘了提及你正在使用的是哪個mysql庫。

  • 如果使用oursql(我建議,它肯定是最好的),用oursql's DictCursor。例如:

    conn = oursql.connect(...) 
    curs = conn.cursor(oursql.DictCursor) 
    
  • 如果使用MySQLdb(爲什麼?)使用MySQLdb's DictCursor。例如:

    conn = MySQLdb.connect(..., cursorclass=MySQLdb.cursors.DictCursor) 
    curs = conn.cursor() 
    

這樣做會給你返回類型的字典的每一行的光標。請記住在查詢中不要有重複的rownames。

+1

剛剛發現這個,所以即時+1和接受。示例結構:'cursor = db.cursor(MySQLdb.cursors.DictCursor)' – SK9 2011-12-24 10:33:02

+10

'MySQLdb.connect(...,cursorclass = MySQLdb.cursors.DictCursor)' 不起作用,因爲MySQLdb直到沒有cursors屬性之後建立連接。 SK9s版本'cursor = db.cursor(MySQLdb.cursors.DictCursor)'工作。使用系統MySQLdb測試Ubuntu 10.4。 – jeorgen 2012-11-21 01:10:53

+0

@jeorgen,你可以在官方文檔http://mysql-python.sourceforge.net/MySQLdb.html#mysqldb中看到,你可以將'cursorclass'關鍵字參數傳遞給'connect()'調用。它在這裏工作。如果你的失敗可能是由於其他原因。請另外提問。 – nosklo 2012-11-23 11:44:34