Python - 使 pymysql return 成为字典键,值为结果列表

Python - Make pymysql return a dictionary key with the value being a list of the results

当使用 pymysql.cursors.DictCursor 时,pymysql 将 return 结果作为列表中的单独字典。例如,如果用户 table 看起来像这样

userName  firstName
sharko     dan
weirdal    dan

然后 SELECT userName FROM users WHERE firstName = 'dan'; DictCursor 会 return

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

有什么办法可以做到return这个吗? {userName:['sharko','weirdal']}

没有。你每行得到一个字典。当然,将现有的转换为所需的非常容易。

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

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']})

如果你愿意,你可以转换回标准字典:

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