2013-02-12 77 views
2

與python.I IM初學者要SQL結果轉換爲list.Here是我的代碼:轉換SQL結果列出蟒蛇

cursor = connnect_db() 

query = "SELECT * FROM `tbl`" 

cursor.execute(query) 

options = list() 

for i,row in enumerate(cursor.fetchall()): 
    options.append(row[i]) 

有我的表6列,但這些代碼不會產生6元素列表。我在哪裏做錯了?

回答

15

如果您在Python中有一個迭代,做一個列表,你可以簡單地調用the list() built-in

list(cursor.fetchall()) 

注意,可迭代的往往只是作爲一個列表一樣有用,而且可能更有效,因爲它可以偷懶。

您的原始代碼失敗,因爲它沒有太多的意義。你遍歷行並枚舉它們,所以你得到(0, first_row), (1, second_row)等等 - 這意味着你正在建立第n行第n項的列表,這不是你想要的。

此代碼顯示了一些問題 - 首先,list()沒有任何參數通常會更好地替換爲空列表文字([]),因爲它更易於閱讀。

接下來,您嘗試按索引循環,這在Python中是一個壞主意。循環使用值本身,而不是用於獲取值的索引。

還要注意的是,當你做需要建立這樣值的列表,list comprehension是做,而不是創建一個列表,然後追加到它的最佳方式。

+0

thank's.This是我正在尋找。 – saidozcan 2013-02-12 15:26:36

+0

沒有爲我工作。 – 2017-01-26 22:09:08

2
cursor = connnect_db() 

query = "SELECT * FROM `tbl`" 

cursor.execute(query) 

result = cursor.fetchall() //result = (1,2,3,) or result =((1,3),(4,5),) 

final_result = [list(i) for i in result] 
+2

雖然此代碼可能會回答問題,但提供有關此代碼爲何和/或如何回答問題的其他上下文可提高其長期價值。 – adiga 2017-11-06 11:31:29