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 25 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
浅谈Python NLP入门教程
Dec 25 Python
详谈python在windows中的文件路径问题
Apr 28 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
pandas实现将日期转换成timestamp
Dec 07 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 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
2009/06/29 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
php实现等比例压缩图片
2018/07/26 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
Python的requests网络编程包使用教程
2016/07/11 Python
python实现画圆功能
2018/01/25 Python
python 实现登录网页的操作方法
2018/05/11 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
python文件及目录操作代码汇总
2020/07/08 Python
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
J2EE相关知识面试题
2013/08/26 面试题
大学生个人简历中的自我评价
2013/12/27 职场文书
土地租赁意向书
2014/07/30 职场文书
要账委托书范本
2014/09/15 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
Redis高可用集群redis-cluster详解
2022/03/20 Redis
简单聊聊Golang中defer预计算参数
2022/03/25 Golang