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 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
python机器学习之随机森林(七)
Mar 26 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
详解Python循环作用域与闭包
Mar 21 Python
django基于restframework的CBV封装详解
Aug 08 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python OrderedDict字典排序方法详解
May 21 Python
python tqdm库的使用
Nov 30 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
详细解读Python中解析XML数据的方法
2015/10/15 Python
python中range()与xrange()用法分析
2016/09/21 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
公司JAVA开发面试题
2015/04/02 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
护士的岗位职责
2013/12/04 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
mysql幻读详解实例以及解决办法
2022/06/16 MySQL