0

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

4

2 回答 2

9

这样做,使用列表理解

mylist = [row[0] for row in result]

它将展平您的结果并从中创建列表。

另一种方法,没有列表理解:

from itertools import chain
mylist = list(chain.from_iterable(result))

它将展平结果并将其转换为列表。

于 2013-07-11T14:46:37.463 回答
0

StackOverflow 上 75% 的 Python 问题可以用以下词来回答:“列表理解”;)

这是使用列表组合的解决方案:

>>> result = (('alan',), ('bob',), ('steve',), ('tom',))
>>> mylist = [i[0] for i in result]
>>> mylist 
['alan', 'bob', 'steve', 'tom']

请在此处了解有关列表理解的更多信息,它将为您节省大量时间。

于 2013-07-11T14:47:55.977 回答