使用python将excel表自动导入mysql,执行复杂sql后导出excel表格

  今天我们接到了一个任务,要进行一项安全审计分析,就是绕行的分析,即如果源地址是从终端域直接访问后台服务器,而不是通过企业的4A(账号、认证、授权、审计)系统的唯一入口进行访问,则被定义为绕行。

  任务分解为:

  一、需要将resoure(所有安全资产)的表格导入到mysql中。

  二、需要将包含终端信息源地址的表格导入到mysql中。

  三、执行sql后,将执行结果直接另存为excel进行导出,就得到了最后的结果表。

  解决的问题:1、如果将excel表导入到mysql中;2、如果执行sql的操作;3、如何将表导出。

  这样就可以实现分析的自动化,而不需要手工导表到mysql 中,然后再执行存储过程进行计算,最后要手工的导表出来。整个流程一气呵成,相当爽,这就是使用python来解决一些重复劳动,提升工作效率的好工具啦。

  废话不多说,直接代码和解释一起上啦:

  第一步:利用pandas导入excel表格,通过pd.read_excel的功能就可以轻松的导入表格进来了。实现的自动化的第一步:

  import pandas as pd

  from pandas import DataFrame

  from sqlalchemy import create_engine

  import pymysql

  raoxingLogFile= r'D:\绕行审计模型\raoxinglog.xls'

  MechineDatar=r'D:\绕行审计模型\mechine.xlsx'

  raoxingalladdress=r'D:\绕行审计模型\raoxingalladdress.xlsx'

  alldata = DataFrame()

  df_raoxinglog = pd.read_excel(raoxingLogFile,index=False, encoding='utf8')

  df_resource=pd.read_excel(MechineDatar,index=False, encoding='utf8')

  df_mac=pd.read_excel(raoxingalladdress,index=False, encoding='utf8')

  第二步:将表格导入到本机的mysql的数据库中,并建立相应的表格

  里面的:root是数据库的用户名;123456是数据库的密码;raoxingtable,resource,mac是导入mysql中的表格的名称,schema=“pandas”中的pandas是数据库名称。后面的if_exists='replace',是如果表已经存在就进行覆盖,如果不存在就新建。

  # 里面的root是用户名,123456是数据库密码

  engine = create_engine("mysql+pymysql://root:123456@localhost:3306/pandas?charset=utf8")

  # 导入数据库绕行日志,raoxinglog是表名。

  df_raoxinglog.to_sql("raoxingtable", engine, schema="pandas", if_exists='replace', index=True,chunksize=None, dtype=None)

  print("已导入数据库绕行日志")

  # 导入数据库资产中心数据

  df_resource.to_sql("resource", engine, schema="pandas", if_exists='replace', index=True,chunksize=None, dtype=None)

  # 导入源地址列表数据枣庄男科医院哪家好 http://mobile.zzdffk.cn/

  df_mac.to_sql("mac", engine, schema="pandas", if_exists='replace', index=True,chunksize=None, dtype=None)

  第三步:就是连接数据库,并执行mysql中的sql了。大家可以随意替换sql的内容,根据实际情况进行替换。

  conn = pymysql.connect(host="127.0.0.1", user="root",password="123456",database="pandas",charset="utf8")

  print("已连接数据库")

  sql = '''select raoxingtable.`发生时间`,raoxingtable.`源地址`,mac.`使用人`,mac.`使用楼层`,raoxingtable.`发生主机IP` , resource.`责任人`,resource.`用途概述`,mac.`绕行类型`

  FROM raoxingtable LEFT JOIN resource ON raoxingtable.`发生主机IP`=resource.`IP地址`

  LEFT JOIN mac ON raoxingtable.`源地址`=mac.`IP地址`;'''

  print("执行sql操作成功")

  df = pd.read_sql(sql,conn)

  print(df)

  第四步:导出sql的计算结果到桌面上的表格里面,实现自动化运算。

  alldata=alldata.append(df)

  alldata.to_excel('D:\绕行审计模型\overcome_log.xlsx')

  print("已成功导出")

  第五步:进行exe程序的打包发布,之后就只需要双击exe的文件就能够帮我自动导表,自动分析,自动出结果了,后续还可以进行可视化报表展示,直接输出到word里面,一份专业的分析报告就出来了,是不是很酷炫啊,哈哈~

  1、到程序的文件目录下面,准备一个小的ico的图片,然后进行打包操作:pyinstaller -F -i 图标名称和python的脚本 ,前提是图标的文件要和脚本放在一起。

  

 

  2、打包完成后,在dist文件夹里面就有exe的文件了,就可以点击执行了。

  

 

  原来需要1个小时的工作,现在双击下就可以了。

posted @ 2021-03-02 15:38  网管布吉岛  阅读(807)  评论(0编辑  收藏  举报