Python使pymysql返回一个字典键,其值为结果列表

2024-09-30 08:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用pymysql.cursors.DictCursor时,pymysql将以列表中单独的字典的形式返回结果。例如,如果users表如下所示

userName  firstName
sharko     dan
weirdal    dan

然后在SELECT userName FROM users WHERE firstName = 'dan';上,游标将返回

[{'userName': 'sharko'}, {'userName': 'weirdal'}]

有没有办法让它退回这个? {userName:['sharko','weirdal']}


Tags: from列表字典usernamefirstnamewhereselectusers
2条回答

使用^{}个列表将结果转换为所需的形式:

from collections import defaultdict

results = defaultdict(list)

query = 'SELECT userName FROM users WHERE firstName = %s'
for item in cursor.execute(query, ('dan',)):
    for k in item:
        results[k].append(item[k])

例如,这将导致:

>>> results
defaultdict(<class 'list'>, {'userName': ['sharko', 'weirdal']})

如果需要,您可以转换回标准dict:

>>> results = dict(results)
>>> results
{'userName': ['sharko', 'weirdal']}

不,你每行有一个dict。当然,从你拥有的东西到你想要的东西的转换非常容易

相关问题 更多 >

    热门问题