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

Python将SQLite查询列表保存至Excel文件的代码求助

SQLite查询数据导出到Excel的代码修正

原代码存在的问题

  • projects.append(dict_temp)缩进错误,位于for循环外部,最终仅将最后一行数据添加到列表中
  • 循环变量名row_count与之前的变量重名,且未添加Excel表头,导出文件无列名
  • wb.save()放在循环内部,每次循环都执行保存操作,效率低下
  • 异常捕获过于宽泛,没有具体错误信息,无法定位问题
  • 后续的wb.SaveAs是错误用法,openpyxl中使用wb.save()即可,且save_workbook变量未定义
  • 缺少必要的导入语句,Workbook类未导入

修正后的代码

from openpyxl import Workbook
import sqlite3

# 需自行补充数据库连接、游标初始化及查询语句
# conn = sqlite3.connect('your_database.db')
# sqlite_cursor = conn.cursor()
# query = "SELECT ... FROM ..."

try:
    sqlite_cursor.execute(query)
    projects_data = sqlite_cursor.fetchall()

    projects = []
    # 定义表头,与字典键顺序保持一致
    headers = ['GivenName', 'surname', 'DeptDesc', 'Region', 'LicType', 
               'LicClass', 'Licence_Number', 'License_Holder_Name', 
               'License_Description', 'LicStatus', 'Issue_Date', 'Expiry_Date']

    for row in projects_data:
        dict_temp = {
            'GivenName': row[0],
            'surname': row[1],
            'DeptDesc': row[2],
            'Region': row[3],
            'LicType': row[4],
            'LicClass': row[5],
            'Licence_Number': row[6],
            'License_Holder_Name': row[7],
            'License_Description': row[8],
            'LicStatus': row[9],
            'Issue_Date': row[10],
            'Expiry_Date': row[11]
        }
        projects.append(dict_temp)  # 修正缩进,确保每一行数据都被加入列表

    wb = Workbook()
    ws = wb.active
    ws.append(headers)  # 添加Excel表头

    # 循环写入数据行
    for item in projects:
        row_values = [item[header] for header in headers]
        ws.append(row_values)

    wb.save('Driver License.xlsx')  # 统一保存文件,移至循环外部
    print('文件保存成功')

except Exception as e:
    print(f"错误信息: {str(e)}")
finally:
    # 确保数据库连接关闭,避免资源泄漏
    if 'conn' in locals():
        conn.close()

关键改进说明

  1. 修正列表追加语句的缩进,保证所有查询结果都被存入列表
  2. 添加表头定义,导出的Excel文件带有列名,数据结构更清晰
  3. 将文件保存操作移至循环外部,仅执行一次,提升效率
  4. 捕获具体异常并打印错误信息,便于定位问题
  5. 移除无效的wb.SaveAs代码,使用openpyxl标准保存方法
  6. 补充必要的导入语句,确保代码可正常运行
  7. 增加数据库连接的自动关闭逻辑,优化资源管理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:05:24