一.本代码中的主要要点:
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('>>>>>>>>