【问题标题】:Can't export query results to a csv file无法将查询结果导出到 csv 文件
【发布时间】:2023-04-04 05:18:01
【问题描述】:

我编写了以下代码,试图将查询结果导出到 csv 文件。

    def get_avg(self,f0, f00, f1, f2):
        arr = [1,2,3,4,5,6,7,8,9,10,11,12,13]
        for n in arr:
            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, n, f00, f00)).fetchall()
            print(curr_tab)
        with open("cvc.csv", "w") as this_file:
            for i in curr_tab:
                csv.writer(this_file).writerow(i)

问题在于,当我按下调用此特定函数的按钮时,会创建文件 cvc.csv,但不会将任何内容写入该文件。 而 print(curr_tab) 本身的结果会返回所需的结果。

[(1.0, 'late', 1, 359.0, 11.0)]
[(2.0, 'early', 1, 460.0, 13.0)]
[]
[]
[]
[]
[]
[]
[(9.0, 'early', 1, 460.0, 19.0)]
[]
[]
[]
[]

【问题讨论】:

  • 你只是在写最后一个查询的结果。

标签: python python-3.x sqlite csv export-to-csv


【解决方案1】:

每次通过for n in arr: 循环,您都将curr_tab 替换为该查询的结果。因此,当您写入 CSV 文件时,您只是在写入最后一个查询的结果。

您可以将 CSV 写入该循环内,也可以连接所有查询结果并写入。

def get_avg(self,f0, f00, f1, f2):
    arr = [1,2,3,4,5,6,7,8,9,10,11,12,13]
    all_tab = []
    for n in arr:
        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, n, f00, f00)).fetchall()
        print(curr_tab)
        all_tab.extend(curr_tab)
    with open("cvc.csv", "w") as this_file:
        csv.writer(this_file).writerows(all_tab)

【讨论】:

    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多