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']}
当使用 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']}