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

Python执行SQL查询结果可打印但无法写入CSV文件问题求助

问题根源

你的核心问题是curr_tab变量在循环中被反复覆盖,最终写入文件时用的是最后一次循环的查询结果:

  • 你遍历的arr最后一个值是13,对应你打印的最后一行输出就是空列表[]
  • 循环结束后curr_tab已经被覆盖为最后一次的空值,写文件时自然没有内容

修复方案

首先要把每次循环的非空查询结果都存下来,不要每次覆盖:

import csv

def get_avg(self,f0, f00, f1, f2):
    arr = [1,2,3,4,5,6,7,8,9,10,11,12,13]
    # 定义列表存储所有有效查询结果
    all_result = []
    for n in arr:
        # 改用参数化查询传递变量n,避免SQL注入风险
        curr_tab = c.execute("SELECT {}, {},  COUNT({}), AVG({}), AVG({}) FROM {} WHERE {} = ? GROUP BY {} ORDER BY COUNT({}) DESC".format(f0, f00, f00, f1, f2, self.table_name, f0, f00, f00), (n,)).fetchall()
        print(curr_tab)
        # 非空结果追加到总列表
        if curr_tab:
            all_result.extend(curr_tab)
    # 统一写入所有结果
    with open("cvc.csv", "w", newline="", encoding="utf-8") as this_file:
        writer = csv.writer(this_file)
        writer.writerows(all_result)

额外优化说明

  • 打开csv文件时添加newline=""参数,可避免Windows系统下写入出现多余空行
  • 指定编码为utf-8,避免特殊字符写入乱码
  • 不需要每次写行都新建csv.writer对象,创建一次复用即可,运行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:45:00