2013-11-25 45 views
0

有沒有什麼辦法可以從我的SQL選擇結果中獲取列名? 這裏是我的小測試代碼和所有我要的是生成結果的樣品JSON:從Python中的MySQL表中生成列名稱

import MySQLdb 
... 
.... 

cursor.execute('SELECT * from table') 
rows = cursor.fetchall() 
column = [t[0] for t in cursor.description] 

for row in rows: 
    myjson = {"id": row[column['id']], "name": row[column['name']], "age": row[column['age']]} 
    myresult = json.dumps(myjson, indent=4) 
    return myresult 

但是我卻越來越TypeError: tuple indices must be integers, not str 我不想在我的情況下加用指數像這樣row[2]或從我的表中刪除一列,它不會影響結果。我希望能夠引用列名稱。

任何幫助,將不勝感激。

回答

0

您可以通過cursor.description訪問列名,這是一個元組元組。通過訪問每個元素的第一個元素,可以獲得列名。

column_names = [t[0] for t in cursor.description] 

這意味着您可以創建一個字典與列名 - >索引映射這將至少讓你喜歡寫東西

for row in rows: 
    myjson = {"id": row[columns['id']], "name": row[columns['name']], "age": row[columns['age']]} 
    myresult = json.dumps(myjson, indent=4) 
    return myresult 
+0

喜埃裏克,感謝您的幫助。我更新了代碼,仍然收到相同的錯誤。請參閱上面的代碼。有什麼我失蹤? –

+0

嗨,我終於搞定了。感謝真棒指針。 –