背景
最近项目中需要抽取数据库中某些数据组成一个缓存表,SQL倒是不复杂就是单纯的慢,慢到navicat跑崩了也没跑出来,然后就想着用python写脚本,根据时间字段做异步查询
代码
数据库连接写成伪码,过程抽象一下就是这样
import time
import pandas as pd
from concurrent.futures import ThreadPoolExecutor
# 需要保存的字段,sql中已查询
FIELDS = ["FIELDS_1",
"FIELDS_2",
"FIELDS_3",
"FIELDS_4"
"FIELDS_5"]
executor = ThreadPoolExecutor(max_workers=8)
df = pd.DataFrame(columns=FIELDS)
def get_data(i):
# 创建oracle连接
# 根据参数i,用时间参数format执行的sql
# 执行sql并获取结果
time.sleep(6)
return [{"data": "data"}], i
def save_data(future):
# 用pandas写入.xlsx格式文件中
print("保存第{}组数据".format(future[1]))
global df
df = df.append(pd.DataFrame(data=fu