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()
关键改进说明
- 修正列表追加语句的缩进,保证所有查询结果都被存入列表
- 添加表头定义,导出的Excel文件带有列名,数据结构更清晰
- 将文件保存操作移至循环外部,仅执行一次,提升效率
- 捕获具体异常并打印错误信息,便于定位问题
- 移除无效的
wb.SaveAs代码,使用openpyxl标准保存方法 - 补充必要的导入语句,确保代码可正常运行
- 增加数据库连接的自动关闭逻辑,优化资源管理
内容的提问来源于stack exchange,提问作者Suvechha Bhadra
相关产品推荐
相关产品推荐

