在工作过程中要定期的更新excel表的信息,每个星期都要去查询strarocks的数据导出结果到excel,俗话说:“不会偷懒的运维不是好运维”,于是写了python小程序解决这个重复的工作,设置定时任务,直接去服务器下载导出的excel表格即可。
代码
代码的逻辑简单介绍:将要执行的SQL以名称进行区分保存并放到目录:SQLfileDir,设置结果存放路径:./…/outputdir/。python先查询数据,然后以SQL文件名前缀为excle名称保存,最后移动到指定目录。
本地调试界面:
# -\*- coding: utf-8 -\*-
# @Author : zjh
# @Time : 2023-12-27
# @Description: 定时跑数据保存到excel
import os
import shutil
import pandas as pd
import pymysql
import openpyxl
import datetime
class StarRocksExporter(object):
def \_\_init\_\_(self, host, port, database, user, password, query,
srcdir, destdir,filename):
self.host = host
self.port = port
self.database = database
self.user = user
self.password = password
self.query = query
self.srcdir = srcdir
self.destdir = destdir
self.filename = filename
self.writer = pd.ExcelWriter(filename+str('.xlsx'))
def export\_to\_excel(self):
df = pd.read_sql(self.query, self.engine)
# print(df)
df.to_excel(self.writer, sheet_name=self.filename, index=False)
self.writer.save()
def move\_to\_dest(self):
if not os.path.isdir(self.destdir):
self.destdir = os.mkdir(self.destdir)
file_list = os.listdir(self.srcdir)
for file in file_list:
#print(file)
#print(file.split('.')[0])
try:
#print(file.split('.')[1])
fiel_str = file.split('.')[1]
if fiel_str == 'xlsx':
shutil.move(str(self.srcdir) + file, str(self.destdir) + file)
except Exception:
print("没有后缀的文件:",file)
#shutil.move(str(self.srcdir) + file, str(self.destdir) + file)
def execute(self):
with pymysql.connect(host=self.host,port=self.port,database=self.database,user=self.user,password=self.password) as engine:
self.engine = engine
self.query_star_rock(self.query)
self.export_to_excel()
self.move_to_dest()
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**