You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 18:22:20