python 解决mysql where in 对列表(list,,array)问题

作者:云中不知人 时间:2024-01-27 06:34:23 

例如有这么一个查询语句:

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加引号

但是今天才知道,看的是里面接收参数的变量需要什么类型来加引号的。

来源:https://blog.csdn.net/u011085172/article/details/79044490

标签:python,mysql,列表,list,array
0
投稿

猜你喜欢

  • asp防范SQL注入攻击的函数

    2008-03-11 12:23:00
  • 一文带你了解Python枚举类enum的使用

    2022-05-27 07:46:51
  • python中无法导入本地安装好的第三方库问题

    2022-06-25 12:24:31
  • Go语言实现定时器的方法

    2024-02-09 04:55:21
  • Python OpenCV图像颜色变换示例

    2023-07-30 06:05:00
  • vue使用element-resize-detector监听元素宽度变化方式

    2024-05-29 22:29:26
  • Pyinstaller打包Pytorch框架所遇到的问题

    2023-02-17 06:26:58
  • mysql从一张表查询批量数据并插入到另一表中的完整实例

    2024-01-15 17:38:43
  • Python中的pandas库简介及其使用教程

    2022-02-10 17:11:12
  • Pytorch 实现数据集自定义读取

    2023-11-18 23:58:40
  • Python制作爬虫抓取美女图

    2021-05-15 12:47:45
  • 前端框架之封装Vue第三方组件三个技巧

    2023-07-02 16:37:03
  • 详解Python之可迭代对象,迭代器和生成器

    2022-09-30 02:11:06
  • 编写和优化SQL Server的存储过程

    2009-04-13 10:13:00
  • JavaScript中windows.open()、windows.close()方法详解

    2024-04-18 09:30:57
  • PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT

    2023-09-08 08:07:37
  • 如何使用ASP来读写注册表

    2007-09-20 13:08:00
  • Python的mysql数据库的更新如何实现

    2024-01-28 13:43:12
  • 并发环境下mysql插入检查方案

    2024-01-27 00:59:09
  • MySQL 及 SQL 注入与防范方法

    2024-01-28 02:55:53
  • asp之家 网络编程 m.aspxhome.com