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的Flask框架中使用日期和时间的教程
Apr 21 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
初步剖析C语言编程中的结构体
Jan 16 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
有关Python的22个编程技巧
Aug 29 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
python selenium firefox使用详解
Feb 26 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
Python代码中如何读取键盘录入的值
May 27 Python
基于python实现复制文件并重命名
Sep 16 Python
python语言time库和datetime库基本使用详解
Dec 25 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
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
php中session定期自动清理的方法
2015/11/12 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
Django Form常用功能及代码示例
2020/10/13 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
护士长竞聘书
2014/03/31 职场文书
爱我中华教学反思
2014/04/28 职场文书
大学新生军训方案
2014/05/03 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
护士岗位竞聘书
2015/09/15 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python