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中的多条件排序实现
Jun 07 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
Python字典的核心底层原理讲解
Jan 24 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
python区分不同数据类型的方法
Oct 14 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
Javascript之文件操作
2007/03/07 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python绘制简单折线图代码示例
2017/12/19 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python lambda表达式用法实例分析
2018/12/25 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
干部培训自我鉴定
2014/01/22 职场文书
追悼会主持词
2014/03/20 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
六一亲子活动感想
2015/08/07 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
CPU不支持Windows11系统怎么办
2021/11/21 数码科技