我有一个mysql调用:
zip = 48326
cursor.execute ("""
select distinct(name)
from usertab
where zip= %s
""" , (zip))
result = cursor.fetchall()
结果返回一个如下所示的元组:
result = (('alan',), ('bob',), ('steve',), ('tom',))
但我需要一个这样的清单:
mylist= ['alan', 'bob', 'steve', 'tom']
所以我将元组处理成这样的列表:
mylist = []
for row, key in enumerate(result):
for col, data in enumerate(key):
mylist.append(data)
这段代码有效,但我想要一种更简单的方法 如何直接将mysql单列结果提取到列表中?
答案 0 :(得分:6)
mylist = [row[0] for row in result]
它会使你的结果变平并从中创建列表。
另一种方法,没有列表理解:
from itertools import chain
mylist = list(chain.from_iterable(result))
它会将结果展平并将其转换为列表。
答案 1 :(得分:1)
StackOverflow上75%的Python问题可用以下词语回答:“list comprehension”;)
这是使用list comp的解决方案:
>>> result = (('alan',), ('bob',), ('steve',), ('tom',))
>>> mylist = [i[0] for i in result]
>>> mylist
['alan', 'bob', 'steve', 'tom']
请详细了解列表理解here,它会为您节省大量时间。