python定义字符串数组_从字符串数组(或元组)在Python中创建动态sql“ in list”子句的“最佳”方法是什么?...
我正在从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”子句的“最佳”方法是什么?...相关推荐
- python 定义一个无限制的二维数组方法
python 定义一个无限制的二维数组方法 自定义二维数组方式 n = int(input()) mapL = [list(map(int,input().split())) for _ in ran ...
- C# 传递数组参数_一维数组_二维数组
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 如何在Excel中创建动态定义的范围
Your Excel data changes frequently, so it's useful to create a dynamic defined range that automatica ...
- python定义二维数组_二维数组的定义、初始化和输出,C语言二维数组详解
本节学习二维数组.二维数组与一维数组相似,但是用法上要比一维数组复杂一点.后面的编程中,二维数组用得很少,因为二维数组的本质就是一维数组,只不过形式上是二维的.能用二维数组解决的问题用一维数组也能解决 ...
- python初始化一个二维数组_二维数组初始化
对于一个M行N列的二维数组,可以看成是M行一维数组,一维数组是N列.例如 int array[3][2]; 是一个3行2列的二维数组,其实,如同3个一维数组,一维数组是2列.那么,对3行2列的二维数组 ...
- python定义字典列表_[Python基础]五、列表、元组和字典
5.1 列表List(列表)是Python中最频繁的数据类型,在其他语言中叫数组 专门用于存储一串信息 列表用[]定义,数据之间使用逗号隔开 列表的索引从0开始 5.1.1列表常用操作 name_li ...
- c++ 构造函数数组_从 JS 数组操作到 V8 array.js
前言 最近在写面试编程题,经常用到数组,经常想偷个懒,用它提供的方法,奈何还是对数组方法使用不熟练,导致写了很多的垃圾代码,很多地方稍加修改的话肯定变得简洁高效优雅? 所以✍这篇文章本着了解一下Jav ...
- java字符串拼接_为什么阿里巴巴不建议在for循环中使用quot;+quot;进行字符串拼接...
点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 字符串,是 Java 中最 ...
- c++ 二维数组_二维数组的声明2019_04_18
-------------[感谢小郡提供的图片] [广告位招租] ---------------------------------------------------------------- -- ...
最新文章
- libc.so.6 is needed by mysql_libc.so.6(GLIBC_2.14)(64bit) is needed by…问题的解决办法
- oracle 判断是否错误_Oracle中的并行系列(二):你设置的并行真的生效了吗?...
- 从刘备面试诸葛亮看信息系统项目管理师
- 2012-05-04 12:58 eclipse老是building workspace及自动更新问题,eclipse加速
- 每日一题(6)—— sizeof用法
- 【LeetCode】【HOT】84. 柱状图中最大的矩形(栈)
- ecipse theme
- 「一本通 4.1 例 3」校门外的树 (loj10115)
- ElasticSearch 5.3源码学习 —— Segments_N 文件详解
- 查linux服务器CPU多少C,在linux 下怎么查看服务器的cpu和内存的硬件信息
- Layui动态修改列名
- w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
- U盘中毒文件都不见了
- Crow search algorithm(乌鸦搜索算法)
- 怎么对比2个数据库的差异
- websamba.com免费空间申请全功略
- 虚拟机试用windows server 2022
- 帝国cms在任意位置调用指定id的栏目名称和链接
- 小米10开始抓取日志怎么关闭_小米10手机降价,原因原来在这里
- Vue中好用的打印组件 vue-print-nb
热门文章
- .net使用websocket
- Python中的赋值、引用和深浅拷贝
- Hugo快速搭建Blog
- 理解Docker——深入引擎室
- CMake 条件判断
- Mysql报错Fatal error: Can#39;t open and lock privilege tables: Table #39;mysql.host#39; doesn#39;t...
- virtaulbox视图模式常用切换
- Emmet:HTML/CSS代码快速编写规范(转发)
- Ubuntu Linux 下优化 swap 交换分区及调整swap大小
- 基于SSM实现汽车租赁系统