【问题标题】:Python - Make pymysql return a dictionary key with the value being a list of the resultsPython - 使 pymysql 返回一个字典键,其值为结果列表
【发布时间】:2021-05-19 21:20:15
【问题描述】:

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

userName  firstName
sharko     dan
weirdal    dan

然后在SELECT userName FROM users WHERE firstName = 'dan'; DictCursor 将返回

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

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

【问题讨论】:

    标签: python mysql dictionary pymysql


    【解决方案1】:

    使用列表的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']}
    

    【讨论】:

      【解决方案2】:

      没有。你每行得到一个字典。当然,将你拥有的东西转换成你想要的东西是非常容易的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        • 1970-01-01
        • 2019-08-01
        • 2021-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多