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中pandas模块DataFrame创建方法示例
Jun 20 Python
Python3匿名函数用法示例
Jul 25 Python
Django添加feeds功能的示例
Aug 07 Python
浅谈python写入大量文件的问题
Nov 09 Python
python 检查是否为中文字符串的方法
Dec 28 Python
Python常见数字运算操作实例小结
Mar 22 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 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
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP如何实现跨域
2016/05/30 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
javascript实现连续赋值
2015/08/10 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
详解python-图像处理(映射变换)
2019/03/22 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python openpyxl使用方法详解
2019/07/18 Python
Python中函数的返回值示例浅析
2019/08/28 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
自我评价如何写好?
2014/01/05 职场文书
校园安全教育广播稿
2014/02/17 职场文书
勾股定理课后反思
2014/04/26 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
违纪检讨书
2015/01/27 职场文书
python中的None与NULL用法说明
2021/05/25 Python