Python如何将MySQL查询结果转换为字典列表?
MySQL三列查询结果转字典列表实现方案
你原有写法是将查询结果按「第一列为键、第二列为值」的形式存入单个字典,这种结构天然仅支持2个字段的映射,要存储3列数据,直接将每一行封装为独立字典,再统一存入列表即可。
手动映射字段写法(通用所有MySQL驱动)
初始化空列表存储所有行数据,遍历查询结果时逐行生成字典,把3个字段都作为字典的键值对存入,再追加到列表中:
# 初始化结果存储列表 result = [] # 遍历游标返回的每一行数据 for row in cursor.fetchall(): # 按三列的实际业务含义替换key名称即可,索引对应你查询返回的列位置 single_data = { "name": row[0], "url": row[1], "extra_field": row[2] # 替换为你需要的第三列索引,比如你注释里的row[3]就改对应索引 } result.append(single_data) # 遍历验证结果 for item in result: print(item["name"], item["url"], item["extra_field"])
字典游标自动映射写法(推荐)
如果你使用的是pymysql、mysql-connector-python这类主流Python MySQL驱动,可以直接指定字典游标类型,查询返回的结果本身就是字典列表,不需要手动做索引映射:
from pymysql.cursors import DictCursor # 创建数据库连接时指定游标类为DictCursor conn = pymysql.connect( host="数据库地址", user="账号", password="密码", database="库名", cursorclass=DictCursor ) with conn.cursor() as cursor: cursor.execute("你的查询SQL语句") # fetchall()直接返回字典列表,key和SQL查询的列名完全对应 result = cursor.fetchall() # 直接遍历使用即可 for row in result: print(row)
不建议硬改原有单字典结构存3个字段(比如把后两个字段打包成元组当value),这种结构后续做数据筛选、处理时逻辑会非常繁琐,字典列表的结构是这类场景的通用标准写法。
内容的提问来源于stack exchange,提问作者merlin
相关产品推荐
相关产品推荐

