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中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
python实现dijkstra最短路由算法
Jan 17 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
Python实现为PDF去除水印的示例代码
Apr 03 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 array_merge下进行数组合并的代码
2008/07/22 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
js实现的切换面板实例代码
2013/06/17 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
python 默认参数问题的陷阱
2016/02/29 Python
python常见排序算法基础教程
2017/04/13 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
基于python实现名片管理系统
2018/11/30 Python
python生成带有表格的图片实例
2019/02/03 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
电子商务专业个人的自我评价分享
2013/10/29 职场文书
业务代表的岗位职责
2013/11/16 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers
python中validators库的使用方法详解
2022/09/23 Python