python个人使用代码|python示例--下载mysql数据库中数据--excel表格,合并表格

用到的知识点
1.mysql连接
2.pandas的concat数据合并
3.路径等
import threading import requests import json import pymysql from openpyxl import load_workbook import openpyxl import os from configparser import ConfigParser import time import sys import pandas as pd# __file__#表示文件的名字 # os.path.abspath(__file__)#绝对路径 #软件运行的所在文件夹目录--根目录 BASEDIR=os.path.dirname(os.path.abspath(__file__)) pathfile=os.path.join(BASEDIR,'config','config.ini') # print(pathfile)def inputdata():# stringss=input("请输入数据格式:'pvm ip:行政区划代码,189.1.1.1:610403,...':").strip() stringss=input("请输入数据格式:'ipaddress:行政区划代码,...':").strip() items=stringss.split(',') # print(items,type(items)) pcaddress=['161.20.12.156','161.20.12.112','181.172.11.119','181.172.11.11'] for cityitem in items: ip,citycode=cityitem.split(":") #排除一些ip地址 # if ip=='161.20.12.156'' or ip=='161.20.12.15'' or ip=='181.172.11.11': if ip in pcaddress: print("IP地址输入问题") sys.exit()if not citycode.startswith('112504'): print("行政区划范围输入问题") sys.exit()#启用多线程进行数据下载工作 th=threading.Thread(target=calldownloadcity,args=(ip,citycode)) th.start() # print(ip,citycode) # calldownloadcity(ip,citycode)def calldownloadcity(ip,citycodearg): citycode = citycodearg cityaddress = iptry: db = pymysql.connect(host=cityaddress, user="root", passwd="123456", db="dbss") except: print(cityaddress,"连接平台失败,请检查网络!") time.sleep(2) returndownloadCity(citycode,db)# 下载每个地市的文件,采用sql语句+excel表格的方式 def downloadCity(citycode,db):# 这里字符串的解决一定要注意的 # sqlcity = "select * from device WHERE gb_id like %s%%"%(citycode) sqlcity = "select * from device WHERE gb_id like '{}%%'".format(citycode) # print(sqlcity) cursor = db.cursor() cursor.execute(sqlcity)wb = openpyxl.Workbook() wbsheet = wb.create_sheet("结果") print(citycode,"数据写入文件中,请稍等....") result = cursor.fetchall() # print(result) for rowdata in result: wbsheet.append(rowdata)# 写入excel表格 # print(rowdata) xlsxname ="{}.xlsx".format(citycode) wb.save(xlsxname)# 保存的excel表格cursor.close()# 关闭游标 db.close()# 关闭数据库 print(xlsxname,"数据写入完成,请到软件目录下获取excel文件")def fludb(): pass#合并所有excel表格#合并表格数据是以 191开头 以xlsx结尾的excel表格信息 def concatex(): # print(pathfile)filesnames=os.listdir(os.getcwd())#获取当前目录下所有文件 writername=pd.ExcelWriter(r'ALL合成信息表.xlsx')#最终保存文件的名称--最终合成的xlsx文件 excel_files=[]#接入符合要求的excel表格名称 for filename in filesnames: if os.path.splitext(filename)[1]=='.xlsx' and filename.startswith('191'):#后缀以'.xlsx'结尾,同时与‘191’开头的文件放入列表 excel_files.append(filename) print("合并表格正在进行中,请稍后....:") print(excel_files)mergedflists=[]#存放读取的表格的内容,临时缓冲区作用for excelname in excel_files: excel_content=pd.read_excel(excelname,sheet_name='结果',header=None)#读取每个表格的sheet表为‘结果’的表格信息到列表中 mergedflists.append(excel_content)####数据保存=############# pd.concat(mergedflists).to_excel(writername,sheet_name='All合成表信息',index=False) writername.save()#保存信息def tuichu(): sys.exit()func_dic = { '1' :inputdata, '2' :concatex, '3' :tuichu,}if __name__ == '__main__':while True: print('''===========功能列表=========== 1.下载图像资料信息 2.合并当前目录下191**开头的所有excel表格-->'ALL合成信息表.xlsx' 3.退出''') choice = input('请输入功能编号:').strip() if choice not in func_dic: print("输入正确的编号:") continuefunc_dic.get(choice)() # print("本次录入数据条目是{}:条".format(jc))

【python个人使用代码|python示例--下载mysql数据库中数据--excel表格,合并表格】

    推荐阅读