将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()
相关推荐
从琳开始9893 分钟前
从Socket到TCP回显服务器:Java网络编程完整指南
java·服务器·网络·tcp/ip·java-ee
养军博客3 分钟前
Spring Security 4.x / 5.x / 6.x 配置全对比:前后端不分离与前后端分离
java·后端·spring·springsecurity
wifi___4 分钟前
SpringBoot自动装配原理
java·spring boot·后端
SL_staff33 分钟前
制造订单交付闭环实践:用跨部门计划模板解决缺料-停机-返工三角死循环
java·开源·产品
device_Any37 分钟前
接口文档写着三个字段,接口返回了五个
android·java·linux
Wang's Blog42 分钟前
Java 项目实战: 交友项目 - 小视频模块实战:访客记录、FastDFS 存储与 SpringCache 缓存
java·缓存·交友
xurime43 分钟前
Excelize 开源基础库发布 2.11.1 版本更新
数据分析·excel·开源软件·excelize·gitcode
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(09)
java·数据库·mysql·面试·八股·大厂实习
吹什么轩2 小时前
constexpr 完全指南:从 const 的两种含义,到编译期计算的四次演进
java·前端·javascript
她的男孩2 小时前
租户 A 的验证码,却用了租户 B 的 AccessKey:Forge Admin 修跨租户短信串发
java·spring boot·saas