python通过ssh通道连接数据库-读取sql执行查询-结果过滤-写入excel-格式表格(小白原创文章)

本文介绍了一个Python脚本,通过SSH通道连接MySQL数据库执行SQL查询,过滤结果后写入Excel表格。实现了自动增加Sheet页、过滤查询结果等功能,提升了工作效率。
摘要由CSDN通过智能技术生成

一.本代码中的主要要点:

ssh通道、pymysql模块、load_workbook模块、repalce的用法、函数的封装、函数结果返回另一函数当作入参调用、字典转换列表、查询结果过滤等等。这一篇是pymysql连接mysql数据库的,下一篇发表Oracle数据库的。

二.实现的功能:

1.通过ssh通道连接mysql数据库;
2.读取sql文件中多个sql语句;
3.通过pymysql模块执行查询;
4.指定变量替换(之前使用sql语句查询,定期就要出报表。当时想着如果可以设置变量就好了。但是sql语句中貌似没有设置变量替换值的方法,如有大神会的多多指教。)
5.根据查询结果的数量和表格中的sheet页面数量比对判断自动增加sheet页面数量;
6.查询结果过滤,同时将自定义的sheetnames列表中的数值也过滤掉,使查询结果和名称能够一一对应;
7.从pymysql的查询结果中提取sheet页面的表头和内容信息;
8.将内容循环写入对应的表格中;
9.保存表格内容;重命名sheet页名称;
10.统一刷新表格内容格式。

三.心得

学习python代码三个月,课程学习的比较基础,但是有了基本的学习方法。大多模块和功能都是网上查教程自学的。遇到问题或者报错多用print!多用print!多用print!重要事情说三遍,知道错的原因才能有方向。
代码里的数据信息等都是随意填写的,替换成自己的就可以。自己的工作需要经常统计终端和应用的使用信息发给客户,重复劳动太无聊了,索性自己编写了程序,自己也提高了,工作效率也优化了。原来统计一份数据到格式调整完能发给客户最少得三分钟,现在五秒钟改条件,然后运行代码去茶水间接杯水回来就可以给客户发文件了。哈哈哈~~
一些很细的就不提了,如果有用得到的可以直接套代码使用了,如果大家能够有更好的方法,欢迎指正。有不明白的也可随时发问,看到必回!大家如有转发,请标明转发,多谢!
下方直接上代码:

#导入所需模块功能
import pymysql,os
from sshtunnel import SSHTunnelForwarder
from openpyxl import load_workbook,Workbook
from openpyxl.styles import PatternFill,Alignment,Side,Border,Font
from openpyxl.utils import get_column_letter
#定义写入文件的路径
file_path=('E:/Python/open.xlsx')
sql_path=('E:/Python/数据统计/prod_终端登录及微应用情况.txt')
org_no='4140126'
org_level='5'
level5='SUBSTR(b.ORG_NO,1,7)='
start_time='2021-06-01'
end_time = '2021-07-01'
sheetnames_list=['1.设备账号登录总体情况','2.账号登录详情','3.设备登录详情','4.当期老设备登录数量','5.非订单类应用使用频次统计']

################格式调整函数########################
def format_excel(file_path):
    #定义表格样式
    #定义文本对齐样式(横向、纵向居中)
    align = Alignment(horizontal='center',vertical='center')
    #定义字体样式
    fontObj1= Font(name=u'宋体',bold=True,italic=False,size=11)
    fontObj2= Font(name=u'宋体',bold=False,italic=False,size=11)
    #定义样式为细线
    side=Side('thin')
    line=Border(bottom=side,top=side,left=side,right=side)
    #定义表头样式
    header_fill=PatternFill('solid',fgColor='C9C9C9')
    #处理文件格式
    wb=load_workbook(file_path)
    sheets = wb.sheetnames
    print('>>>>>>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值