用到的知识点
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表格,合并表格】
推荐阅读
- Python|Python(列表浅层快速掌握 —— 创建、访问、增加、删除、修改、统计及计算)
- CH3-数据准备和特征工程|2-3 处理缺失数据
- python数据分析|numpy 数组操作
- Real|YOLOv3在Intel Realsense上的Python实现(未实现)
- Python List pop()函数使用示例
- Python全角/半角字符互转
- 如何从表1中检索列数据并使用SQLite数据库将该列值插入到Android Studio的表2中()
- Android中Activity中访问数据库操作记录
- python静态web服务器如何实现