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正则抓取网易新闻的方法示例
Apr 21 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
Pycharm plot独立窗口显示的操作
Dec 11 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
Django框架中视图的用法
Jun 10 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版)
2006/10/09 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
使用php清除bom示例
2014/03/03 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
js 替换
2008/02/19 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
python实现图片批量剪切示例
2014/03/25 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
教师专业理论水平的自我评价分享
2013/11/09 职场文书
粗加工管理制度
2014/02/04 职场文书
小学班主任寄语大全
2014/04/04 职场文书
小学生演讲稿大全
2014/04/25 职场文书
办公室规章制度范本
2015/08/04 职场文书
java解析XML详解
2021/07/09 Java/Android
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server