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读写Excel文件方法介绍
Nov 22 Python
Python中title()方法的使用简介
May 20 Python
十个Python程序员易犯的错误
Dec 15 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
使用Python对SQLite数据库操作
Apr 06 Python
python 定时修改数据库的示例代码
Apr 08 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
解析python的局部变量和全局变量
Aug 15 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
Python with语句用法原理详解
Jul 03 Python
解决c++调用python中文乱码问题
Jul 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
获得Google PR值的PHP代码
2007/01/28 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
python plotly画柱状图代码实例
2019/12/13 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
物业经理自我鉴定
2014/03/03 职场文书
仓库管理计划书
2014/05/04 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server