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

 更新时间:2020年06月06日 14:42:26   作者:云中不知人  
这篇文章主要介绍了python 解决mysql where in 对列表(list,,array)问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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实现计算纳什均衡的示例详解

    纳什均衡是一种博弈论中的概念,它描述了一种平衡状态,其中每个参与者都不能通过独立改变其决策来提高自己的利益。本文就来用Python中的Nashpy和PuLP实现计算纳什均衡,感兴趣的可以了解一下
    2023-02-02
  • Django中提示消息messages的设置方式

    Django中提示消息messages的设置方式

    今天小编就为大家分享一篇Django中提示消息messages的设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 在pycharm中无法import所安装的库解决方案

    在pycharm中无法import所安装的库解决方案

    这篇文章主要介绍了在pycharm中无法import所安装的库解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python利用Gradio与EasyOCR构建在线识别文本的Web应用

    Python利用Gradio与EasyOCR构建在线识别文本的Web应用

    随着人工智能的不断发展,各种智能算法越来越普遍,本文就给大家介绍一种通过训练好的算法进行文字识别的方法,而且是Web页面可视化操作,方便调用,希望大家喜欢
    2023-04-04
  • Python基类函数的重载与调用实例分析

    Python基类函数的重载与调用实例分析

    这篇文章主要介绍了Python基类函数的重载与调用方法,实例分析了Python中基类函数的重载及调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 星球大战与Python之间的那些事

    星球大战与Python之间的那些事

    阔别十年时光,全球瞩目的第七部星球大战电影《原力觉醒》将于2016年1月9日在国内上映。它将重新燃起那段神秘的太空岁月与具有原力的宇宙时光。但是,星球大战和Python编程语言又有什么关系呢?
    2016-01-01
  • 通过Python读取照片的Exif信息解锁图片背后的故事

    通过Python读取照片的Exif信息解锁图片背后的故事

    这篇文章主要为大家介绍了通过Python读取照片的Exif信息解锁图片背后的故事探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python实现京东抢秒杀功能

    Python实现京东抢秒杀功能

    这篇文章主要介绍了Python实现京东抢秒杀功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • PyTorch的Optimizer训练工具的实现

    PyTorch的Optimizer训练工具的实现

    这篇文章主要介绍了PyTorch的Optimizer训练工具的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库

    Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库

    在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理,本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中,需要的朋友可以参考下
    2023-10-10

最新评论