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

如何用Python导出SQL查询结果到Excel时添加列标题

问题分析与解决方案

问题根源

  1. 数据结构破坏:你把查询结果的每一行拆成单个元素合并到data列表,导致所有数据失去行列区分,写入时全部挤在同一列。
  2. 缺失列标题:没有从游标中提取表的字段名,导出文件自然没有表头。
  3. 格式错误:写入时既没加列分隔符(逗号),还误用了/n(正确换行符是\n),导致行结构混乱。

修正后的代码

import pymysql

# 连接数据库
dbconn = pymysql.connect(<db details>)
cus = dbconn.cursor()

# 执行查询
cus.execute('sql query')
# 获取查询结果
res = cus.fetchall()
# 提取列标题(字段名)
column_names = [desc[0] for desc in cus.description]

# 用with语句自动管理文件,避免手动关闭遗漏
with open('main.csv', 'w', encoding='utf-8') as var:
    # 先写入列标题,逗号分隔列,结尾加换行
    var.write(','.join(column_names) + '\n')
    # 遍历每行结果,转字符串后用逗号分隔列,写入每行
    for row in res:
        var.write(','.join(str(item) for item in row) + '\n')

# 关闭数据库连接
cus.close()
dbconn.close()

关键说明

  • 列标题提取:cus.description返回每个字段的元组,第一个元素就是字段名,用列表推导式直接提取。
  • 保留行列结构:直接遍历res中的每行元组,不用扁平化数据,确保每行对应CSV的一行。
  • 规范CSV格式:用逗号分隔列,\n分隔行,Excel打开时能正确识别行列结构。
  • 编码与安全:指定utf-8编码避免乱码,with语句自动关闭文件,防止资源泄漏。

内容的提问来源于stack exchange,提问作者MR84

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:12:22