2013-02-12 127 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