1.重要内容分析:
需求分析把python中的这个list列表,listslab=[1101,1102,1103,1104,1105,1106]放入sql语句的
select * from dev_device_camara WHERE id in 中进行查找
如何把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 devicedb WHERE id in {}".format(idstrs)
sqlselect = "select * from devicedb WHERE id in {}".format(ids)
cursor = db.cursor()
2. python中当like模块模糊查询与%占位符同时存在的解决办法:
需求:查询数据库中以‘11%’开头的所有数据信息,
"select * from devicedb WHERE gb_id like '{}%%'".format(citycode)
这里注意'{}%%' 我在这里加上了单引号,就是可以解决这个问题了。
sqlcity = "select * from devicedb WHERE gb_id like '{}%%'".format(citycode)
sqlcity = "select * from devicedb WHERE bqgbnid like '{}%%'".format(citycode)
import requests
import json
import pymysql
from openpyxl import load_workbook
import openpyxl
# 下载内容的组织结构:
# json
# code
# data
# message
# cameraIdList
# j7bP52323231111
# j7b121212121Y3A
# //1.下载文件
#0.连接mysql数据库
"""
程序解决问题:
1.下载ppvm中指定用户下的包含哪些点位信息,例如,张三 这个用户下的有哪些点位信息
2.导出张三 账户下的点位信息到excel表格中。
难点:把这个列表‘idlists=dics["data"]["cameraIdList"] ’===>先转换为元组格式,然后通过format放入sql语句中
放入sql语句的
sqlselect = "select * from devicedb WHERE id in {}".format(idstrs) 中,
此处使用了拼接字符串的方式解决,
"""
db = pymysql.connect(host='127.0.0.1', user='root',passwd= 'a123456', db='stryvmdb')
# 下载json文件信息
def calldoloadfile():
ip=input("请输入ppvtm的地址:").strip()
id=input("请输入pvtmdb数据库中对应的用户的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 devicedb WHERE id in {}".format(idstrs)
sqlselect = "select * from devicedb 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("请输入你要下载的XX代码code:")
downloadCity(citycode)
# 下载每个地市的文件,采用sql语句+excel表格的方式
def downloadCity(citycode):
#这里字符串的解决一定要注意的
# sqlcity = "select * from device WHERE id like %s%%"%(citycode)
sqlcity = "select * from device WHERE 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.下载XX数据
''')
choice = input('请输入功能编号:').strip()
if choice not in func_dic:
print("输入正确的编号:")
continue
func_dic.get(choice)()
# print("本次录入数据条目是{}:条".format(jc))