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中的闭包实例详解
Aug 29 Python
优化Python代码使其加快作用域内的查找
Mar 30 Python
PyCharm代码格式调整方法
May 23 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
python实现小程序推送页面收录脚本
Apr 20 Python
基于python实现检索标记敏感词并输出
May 07 Python
Python读取JSON数据操作实例解析
May 18 Python
实例代码讲解Python 线程池
Aug 24 Python
pycharm部署django项目到云服务器的详细流程
Jun 29 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
python同时遍历两个list用法说明
2020/05/02 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
师范毕业生求职自荐信
2013/09/25 职场文书
酒店led欢迎词
2014/01/09 职场文书
党员组织关系介绍信
2014/02/13 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书