问题描述:我需要将sqlite数据提取出来做一部分处理,使用pandas,sqlite3库实现

大致的思路:使用sqlite3读取指定路径的数据,然后使用pandas.read_sql_query接收数据,然后to_dict,再写入到json文件即可。

import os
import json
import sqlite3
import shutil
import pandas as pd

path = "../../Text-To-Sql/Bird/train/train_databases/"
database_list = os.listdir(path)

# database_list=['regional_sales']


for database in database_list:
    print('现在处理的数据库是{}'.format(database))
    
    sqlite_path = path+database+"/"+database+".sqlite"
    # 连接到 SQLite 数据库
    conn = sqlite3.connect(sqlite_path)

    # 获取数据库中所有表格的名称
    cursor = conn.cursor()
    cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
    tables = cursor.fetchall()
    
    dir_path = "../Bird_json/"+database
    
    #每次执行前都删除之前的内容再创建空
    if os.path.exists(dir_path):
        shutil.rmtree(dir_path)
    os.mkdir(dir_path)
       
    for table in tables:
        print('正在处理{}数据库的{}表'.format(database,table[0]))
        json_path = dir_path+"/"+table[0]+".json"
        df = pd.read_sql_query(f"SELECT * from `{table[0]}`", conn)
    
        
        df_list =  df.to_dict('records')
        
        with open(json_path,"w",encoding='utf-8')as f:
            json.dump(df_list,f,indent=2,ensure_ascii=False)