1.重要内容分析:
如何把python的list列表中的数据放入sql语句的in后的语句中的办法:
idlists=dics["data"]["cameraIdList"] #返回一个列表【“id1”,“id2”,。。。】 # print(idlists) ids=tuple(idlists) idstrs=str(ids) #变成sql中的字符查询 #这里是关键信息,重点查询数据信息,把python中的列表转换成字符,然后在sql中查询 #1. sqlselect = "select * from device WHERE id in {}".format(idstrs) sqlselect = "select * from device WHERE id in {}".format(ids) cursor = db.cursor()
import requests import json import pymysql from openpyxl import load_workbook import openpyxl # 下载内容的组织结构: # json # code # data # message # cameraIdList # j7bP32dsdssdsdsdsdqw # j7bwewerwewewerwewee # //1.下载文件 #0.连接mysql数据库 """ 程序解决问题: 1.下载ppvm中指定用户下的包含哪些点位信息,例如,张三 这个用户下的有哪些点位信息 2.导出张三 账户下的点位信息到excel表格中。 难点:把这个列表‘idlists=dics["data"]["cameraIdList"] ’===>先转换为元组格式,然后通过format放入sql语句中 放入sql语句的 sqlselect = "select * from evice WHERE id in {}".format(idstrs) 中, 此处使用了拼接字符串的方式解决, """ db = pymysql.connect(host='127.0.0.1', user='root',passwd= 'a123456', db='stryvmdb') # 下载json文件信息 def calldoloadfile(): ip=input("请输入ppvm的地址:").strip() id=input("请输入np_pvmdb数据库中对应的用户的id名称:").strip() doloadfile(ip, id) def doloadfile(ip,id): url61 = "http://{}:31121/npconfig/api/v1/{}/camera/idList".format(ip,id) res=requests.get(url61) savefilename="{}.json".format(ip) with open(savefilename,"wb") as f: #这里关注wb写入的是二进制文件 f.write(res.content) #2.读取需要的文件---》一个列表 def callreadfile(): jsonname=input("请输入要读取的json文件名称:") # 判断下 如果没有写*。json后缀,自动加上后缀 if not jsonname.endswith(".json"): jsonname="{}.json".format(jsonname) xlsxname="{}.xlsx".format(jsonname) #保存的excel文件名,跟输入的json文件同名 readfile(jsonname,xlsxname) def readfile(jsonname,xlsxname): # with open("61json.json","r") as fr: with open(jsonname,"r") as fr: dics=json.load(fr) # print(dics) # return dics idlists=dics["data"]["cameraIdList"] #返回一个列表【“id1”,“id2”,。。。】 # print(idlists) ids=tuple(idlists) idstrs=str(ids) #变成sql中的字符查询 #这里是关键信息,重点查询数据信息,把python中的列表转换成字符,然后在sql中查询 # sqlselect = "select * from device WHERE id in {}".format(idstrs) sqlselect = "select * from device WHERE id in {}".format(ids) cursor = db.cursor() cursor.execute(sqlselect) wb = openpyxl.Workbook() wbsheet = wb.create_sheet("结果") print("数据写入文件中,请稍等....") result=cursor.fetchall() # print(result) for rowdata in result: wbsheet.append(rowdata) #写入excel表格 # print(rowdata) wb.save(xlsxname) #保存的excel表格 cursor.close() #关闭游标 db.close() #关闭数据库 print("完成数据写入,请到软件目录下获取excel文件") def calldownloadcity(): citycode = input("请输入你要下载的城市代码code:") downloadCity(citycode) # 下载每个地市的文件,采用sql语句+excel表格的方式 def downloadCity(citycode): #这里字符串的解决一定要注意的 # sqlcity = "select * from deviceWHERE gb_id like %s%%"%(citycode) sqlcity = "select * from deviceWHERE gb_id like '{}%%'".format(citycode) print(sqlcity) cursor = db.cursor() cursor.execute(sqlcity) wb = openpyxl.Workbook() wbsheet = wb.create_sheet("结果") print("数据写入文件中,请稍等....") 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("完成数据写入,请到软件目录下获取excel文件") def fludb(): pass func_dic = { '1':calldoloadfile, '2':callreadfile, '3':calldownloadcity, } if __name__ == '__main__': while True: print(''' ===========功能列表=========== 1.下载pvm导出的用户权限的json文件 2.读取数据并且生成excel表格 3.下载cc数据 ================== ''') choice = input('请输入功能编号:').strip() if choice not in func_dic: print("输入正确的编号:") continue func_dic.get(choice)() # print("本次录入数据条目是{}:条".format(jc))