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语言的优雅之处
Jul 04 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
python代码如何实现余弦相似性计算
Feb 09 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
什么是python的id函数
Jun 11 Python
python中rb含义理解
Jun 18 Python
Python lambda表达式原理及用法解析
Aug 18 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
python中如何使用虚拟环境
Oct 14 Python
python爬虫今日热榜数据到txt文件的源码
Feb 23 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中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
js比较日期大小的方法
2015/05/12 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
对python判断是否回文数的实例详解
2019/02/08 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
python常用排序算法的实现代码
2019/11/08 Python
keras中的History对象用法
2020/06/19 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
详解python tkinter 图片插入问题
2020/09/03 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
2014年团委工作总结
2014/11/13 职场文书
中英文求职信范文
2015/03/19 职场文书
药店收银员岗位职责
2015/04/07 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python