python mysql where in 对列表(list,,array)问题
2018-01-12 15:36
495 查看
例如有这么一个查询语句:
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)这样子就可以了
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 列表 list 数组 array
- MySQL 存储过程传参数问题:实现 where id in(1,2,3,...)
- 静态SQL和动态SQL之where in list问题(读书笔记之一)
- Python 列表解析 例子 讲解 学习 list comprehension in python demo
- Python 列表list 数组array
- MySQL 存储过程传参数问题:实现 where id in(1,2,3,...)
- Python 列表 list 数组 array 常用操作集锦
- python笔试题之找出一个列表里出现频次最高的元素(most common elements in a list)
- Python中列表list以及list与数组array的相互转换实现方法
- 使用常规字符串函数及动态视图解决where in list问题(读书笔记之三)
- Python插入数据到mysql:1054, "Unknown column 'CNITSEC2014SRV' in 'field list'"
- Python 列表 list 数组 array 常用操作集锦
- python list列表删除元素需要注意的问题
- Python 列表 list 数组 array 常用操作集锦
- mysql select *... where id in (select 字符串 from ... )查询结果问题?
- Python3基础 list in 与 not in 判断一个变量是否在列表中存在
- mysql/sqlserver where in 传参数的问题
- WHERE IN LIST问题解析 –丁俊
- mysql/sqlserver where in 传参数的问题
- windows下用Python连接mysql报错问题“MySQLdb in Python: “Can't connect to MySQL server on 'localhost'””