将sqlite3的表转成excel表

打开sqlite3的mdb, 使用.schema找所有表和表结构,然后每一张表都创建一个excel文件,以表名命名文件。

python 复制代码
import sys
import json
import csv
import io
import sqlite3
import os
from xlsxwriter.workbook import Workbook

# 打开sqlite3的mdb, 使用.schema找所有表和表结构,然后每一张表都创建一个excel文件,以表名命名文件,
#  query所有数据,写入excel,统一输出xlsx_out文件

conn=sqlite3.connect('sqlite.mdb')
c=conn.cursor()
os.makedirs('xlsx_out', exist_ok=True)
tables = [row[0] for row in c.execute("select name from sqlite_master where type='table'").fetchall()]
for table_name in tables:
    print(f"proccessing table_name: {table_name}")
    # 创建工作簿、工作表
    workbook = Workbook(f'xlsx_out/{table_name}.xlsx')
    worksheet = workbook.add_worksheet()
    # query所有数据
    cur=conn.execute(f"select * from {table_name}")
    # 第一行为字段名
    headers = [desc[0] for desc in cur.description]
    for j, h in enumerate(headers):
        worksheet.write(0, j, h)
    print(f"write data: {table_name}")
    # 数据从第二行开始写
    for i, rowx in enumerate(cur, start=1):
        for j, value in enumerate(rowx):
            worksheet.write(i, j, value)
    print(f"finished data: {table_name}")

    workbook.close()
    print(f"workbook closed: {table_name}")
conn.close()
相关推荐
学长毕业设计3 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西3 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西3 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午4 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065254 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_4 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
予昊5 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203515 小时前
【SpringAI入门】初识SpringAI
java
weixin_461408585 小时前
Mybatis-flex小记
java·开发语言·mybatis
Doraemomo6 小时前
SQLite数据库
数据库·sqlite