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专用方法与迭代机制实例分析
Sep 15 Python
用Python的Django框架完成视频处理任务的教程
Apr 02 Python
Python中操作mysql的pymysql模块详解
Sep 13 Python
Python正则表达式和元字符详解
Nov 29 Python
python 猴子补丁(monkey patch)
Jun 26 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
Django和Flask框架优缺点对比
Oct 24 Python
浅谈Python中的模块
Jun 10 Python
基于Python实现简单学生管理系统
Jul 24 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
Nov 28 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
用JavaScript显示随机图像或引用
2009/04/21 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
javascript生成随机数方法汇总
2015/11/12 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
vue 中的keep-alive实例代码
2018/07/20 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python统计文本文件内单词数量的方法
2015/05/30 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python如何使用unittest测试接口
2018/04/04 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python异常处理和日志处理方式
2019/12/24 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
上海中网科技笔试题
2012/02/19 面试题
银行出纳岗位职责
2013/11/25 职场文书
社区十八大感言
2014/01/19 职场文书
成立公司计划书
2014/05/07 职场文书
学校春季防火方案
2014/06/08 职场文书
全运会口号
2014/06/20 职场文书
学习十八大演讲稿
2014/09/15 职场文书
行政上诉状范文
2015/05/23 职场文书
2015中秋祝酒词
2015/08/12 职场文书
区域销售大会开幕词
2016/03/04 职场文书