我正在从Python(使用MySQLDb)运行一个动态MySQL查询,该查询包括一个包含字符串值的“ in list”子句.执行此功能的函数将获取一个值数组.如果有帮助,我可以将该数组放入元组或其他任何类型的集合中.

插入此列表的“最佳”方法是什么?请记住,需要单引号和逗号等.这是一种难看但安全的手动方法:

inList = ""

for stringValue in someArray:

if inList != "" : inList += ","

inList += "'%s'" % stringValue

querystr = "SELECT * FROM some_tbl WHERE some_column IN( %s );" % (inList)

另外,这是另一个选择.它更短,但依赖于数组来表示字符串,将来仍保持完全相同:

inList = str(someArray).replace("[", "").replace("]", "")

querystr = "SELECT * FROM some_tbl WHERE some_column IN( %s );" % (inList)

编辑

我写这篇文章时认为我的Python术语是错误的.我应该说的是“列表”而不是“数组”.

解决方法:

确实没有使这种动态查询安全的好方法.您应该切换到参数化查询,在这种情况下,解决方案是:

placeholder = '%s'

param_subs = ','.join((placeholder,) * len(param_list))

sql = 'SELECT col1, col2, . . . FROM Table WHERE Column IN ( %s );' % param_subs

cursor.execute(sql, param_list)

(这假定您使用的是MySQL Connector,不幸的是,它使用%s作为占位符.其他Python库倾向于使用?作为占位符.)

标签:list,arrays,python,mysql

来源: https://codeday.me/bug/20191119/2034128.html

python定义字符串数组_从字符串数组(或元组)在Python中创建动态sql“ in list”子句的“最佳”方法是什么?...相关推荐

  1. python 定义一个无限制的二维数组方法

    python 定义一个无限制的二维数组方法 自定义二维数组方式 n = int(input()) mapL = [list(map(int,input().split())) for _ in ran ...

  2. C# 传递数组参数_一维数组_二维数组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 如何在Excel中创建动态定义的范围

    Your Excel data changes frequently, so it's useful to create a dynamic defined range that automatica ...

  4. python定义二维数组_二维数组的定义、初始化和输出,C语言二维数组详解

    本节学习二维数组.二维数组与一维数组相似,但是用法上要比一维数组复杂一点.后面的编程中,二维数组用得很少,因为二维数组的本质就是一维数组,只不过形式上是二维的.能用二维数组解决的问题用一维数组也能解决 ...

  5. python初始化一个二维数组_二维数组初始化

    对于一个M行N列的二维数组,可以看成是M行一维数组,一维数组是N列.例如 int array[3][2]; 是一个3行2列的二维数组,其实,如同3个一维数组,一维数组是2列.那么,对3行2列的二维数组 ...

  6. python定义字典列表_[Python基础]五、列表、元组和字典

    5.1 列表List(列表)是Python中最频繁的数据类型,在其他语言中叫数组 专门用于存储一串信息 列表用[]定义,数据之间使用逗号隔开 列表的索引从0开始 5.1.1列表常用操作 name_li ...

  7. c++ 构造函数数组_从 JS 数组操作到 V8 array.js

    前言 最近在写面试编程题,经常用到数组,经常想偷个懒,用它提供的方法,奈何还是对数组方法使用不熟练,导致写了很多的垃圾代码,很多地方稍加修改的话肯定变得简洁高效优雅? 所以✍这篇文章本着了解一下Jav ...

  8. java字符串拼接_为什么阿里巴巴不建议在for循环中使用quot;+quot;进行字符串拼接...

    点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 字符串,是 Java 中最 ...

  9. c++ 二维数组_二维数组的声明2019_04_18

    -------------[感谢小郡提供的图片] [广告位招租] ---------------------------------------------------------------- -- ...

最新文章

  1. libc.so.6 is needed by mysql_libc.so.6(GLIBC_2.14)(64bit) is needed by…问题的解决办法
  2. oracle 判断是否错误_Oracle中的并行系列(二):你设置的并行真的生效了吗?...
  3. 从刘备面试诸葛亮看信息系统项目管理师
  4. 2012-05-04 12:58 eclipse老是building workspace及自动更新问题,eclipse加速
  5. 每日一题(6)—— sizeof用法
  6. 【LeetCode】【HOT】84. 柱状图中最大的矩形(栈)
  7. ecipse theme
  8. 「一本通 4.1 例 3」校门外的树 (loj10115)
  9. ElasticSearch 5.3源码学习 —— Segments_N 文件详解
  10. 查linux服务器CPU多少C,在linux 下怎么查看服务器的cpu和内存的硬件信息
  11. Layui动态修改列名
  12. w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
  13. U盘中毒文件都不见了
  14. Crow search algorithm(乌鸦搜索算法)
  15. 怎么对比2个数据库的差异
  16. websamba.com免费空间申请全功略
  17. 虚拟机试用windows server 2022
  18. 帝国cms在任意位置调用指定id的栏目名称和链接
  19. 小米10开始抓取日志怎么关闭_小米10手机降价,原因原来在这里
  20. Vue中好用的打印组件 vue-print-nb

热门文章

  1. .net使用websocket
  2. Python中的赋值、引用和深浅拷贝
  3. Hugo快速搭建Blog
  4. 理解Docker——深入引擎室
  5. CMake 条件判断
  6. Mysql报错Fatal error: Can#39;t open and lock privilege tables: Table #39;mysql.host#39; doesn#39;t...
  7. virtaulbox视图模式常用切换
  8. Emmet:HTML/CSS代码快速编写规范(转发)
  9. Ubuntu Linux 下优化 swap 交换分区及调整swap大小
  10. 基于SSM实现汽车租赁系统