python 解决mysql where in 对列表(list,,array)问题


Posted in Python onJune 06, 2020

例如有这么一个查询语句:

select * from server where ip in (....)

同时一个存放ip 的列表 :['1.1.1.1','2.2.2.2','2.2.2.2']

我们希望在查询语句的in中放入这个Ip列表,这里我们首先会想到的是用join来对这个列表处理成一个字符串,如下:

>>> a=['1.1.1.1','2.2.2.2','2.2.2.2']
>>> ','.join(a) 
'1.1.1.1,2.2.2.2,2.2.2.2'

可以看到,join后的结果并不是我们想要的结果,因为引号的问题。所以我们会想到另外的办法:

>>> a=['1.1.1.1','2.2.2.2','2.2.2.2']
>>> ','.join(["'%s'" % item for item in a])
"'1.1.1.1','2.2.2.2','2.2.2.2'"

同样会有引号的问题,这个时候我们可以通过这个字符串去掉前后的双引号来达到目的。

但是,其实我们还有一种更安全更方便的方式,如下:

>>> a = ['1.1.1.1','2.2.2.2','3.3.3.3'] 
>>> select_str = 'select * from server where ip in (%s)' % ','.join(['%s'] * len(a)) 
>>> select_str
'select * from server where ip in (%s,%s,%s)'

这里我们先根据Ip列表的长度来生成对应的参数位置,然后通过MySQLdb模块中的execute函数来执行:

cursor.execute(select_str,a)

这样子就可以了

补充知识:python中pymysql使用in时候的传参方式

# 注意这里使用in时候传参的方式 {topic_list}这不用加引号,是因为里面需要的值 topic_id是int
sql = "select f_topic_id, f_topic_name, f_partition_num, f_replicas_factor, f_cluster_id, f_topic_token, f_log_retention_time, f_created_at, f_created_by, f_modified_at, f_modified_by from tkafka_topic where f_topic_id in ({topic_list});".format(topic_list=topic_list)

总结:

以前一开始以为传参是看传过来的参数是什么类型来加引号的,int不加引号,str加引号

但是今天才知道,看的是里面接收参数的变量需要什么类型来加引号的。

以上这篇python 解决mysql where in 对列表(list,,array)问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
让python 3支持mysqldb的解决方法
Feb 14 Python
老生常谈Python基础之字符编码
Jun 14 Python
基于Python代码编辑器的选用(详解)
Sep 13 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
python多个模块py文件的数据共享实例
Jan 11 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 Python
在python中使用pyspark读写Hive数据操作
Jun 06 #Python
使用Python构造hive insert语句说明
Jun 06 #Python
Python通过kerberos安全认证操作kafka方式
Jun 06 #Python
pandas分批读取大数据集教程
Jun 06 #Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 #Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 #Python
python访问hdfs的操作
Jun 06 #Python
You might like
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
js里的prototype使用示例
2010/11/19 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
详解vue axios中文文档
2017/09/12 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python之py2exe打包工具详解
2017/06/14 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
python爬虫基础知识点整理
2020/06/02 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
保安自我鉴定范文
2013/12/08 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
安全承诺书格式范本
2015/04/28 职场文书
逃课检讨书范文
2015/05/06 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电