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过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
python计算两个数的百分比方法
Jun 29 Python
python中reader的next用法
Jul 24 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
Python输出指定字符串的方法
Feb 06 Python
通过Python实现一个简单的html页面
May 16 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
一文搞懂python异常处理、模块与包
Jun 26 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
Wordpress php 分页代码
2009/10/21 PHP
php下获取http状态的实现代码
2014/05/09 PHP
laravel安装和配置教程
2014/10/29 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python简单验证码识别的实现方法
2019/05/10 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
pytorch 模型可视化的例子
2019/08/17 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python将图片转base64,实现前端显示
2020/01/09 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
5.1手机促销活动
2014/01/17 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
爱心捐助活动总结
2015/05/09 职场文书
工程进度款催款函
2015/06/24 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers