python -mysql-excel数据导出-如何把python的list列表中的数据放入sql语句的in后的语句中的办法

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))