我希望在列表中获取fetchall操作的结果,而不是元组的元组或字典的元组。例如,
cursor = connection.cursor() #Cursor could be a normal cursor or dict cursor
query = "Select id from bs"
cursor.execute(query)
row = cursor.fetchall()
现在,问题是生成的行是((123,),(234,))或({'id':123},{'id':234}),而我要查找的是(123,234)或[123,234]。如果我可以保存解析结果集的时间,那就最好了。
7条答案
按热度按时间9w11ddsr1#
那么列表解析呢?如果result是
((123,), (234,), (345,))
:如果结果为
({'id': 123}, {'id': 234}, {'id': 345})
:sbdsn5lh2#
我相信经过这么长时间,您已经解决了这个问题,但是,对于一些可能不知道如何使用MySQLdb将游标的值作为字典获取的人来说,您可以使用here中找到的方法:
balp4ylt3#
这个老问题出现在谷歌搜索扁平化数据库查询时,所以这里有更多的建议...
考虑一个快速的list-flattening iterator。
其他答案使用
fetchall()
,它首先加载内存中的所有行,然后迭代生成一个新列表。可能效率很低。可以与MySQL所谓的server side cursor合并:但是这个问题也被标记为Django,它有一个很好的single field query flattener
db2dz4w84#
按以下方式使光标成为对象:
然后,当您对查询执行cursor.fetchall()时,将获得字典的元组,您可以稍后将其转换为列表。
jaql4c8m5#
这将在一个列表中呈现结果,如- list = [122,45,55,44...]
brc7rcf06#
如果只有一个字段,我可以用这个从数据库中制作一个列表:
h22fl7wq7#