如何将mysql单列列表结果直接提取到python中的列表?

时间:2013-07-11 14:40:57

标签: python mysql list tuples

我有一个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单列结果提取到列表中?

2 个答案:

答案 0 :(得分:6)

使用list comprehension

这样做
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,它会为您节省大量时间。