繁体   English   中英

python中sql脚本中未指定数量的变量

[英]Unspecified number of variables in an sql script in python

我想通过类似于这样的python运行对sql数据库的查询:

cursor.execute('SELECT * FROM mf WHERE col2 = ? or ?', (country))

但是,我想在代码的这一部分中包含未指定数量的 或 选项,并且用户在单独的参数文件中指定国家/地区,即我不知道有多少? 放入代码,因为它是可变的。 是否可以在 SQL 代码中执行此操作?

首先,您的 SQL 代码无效。 你想要col2 = ? or col2 = ? col2 = ? or col2 = ? 或(更好) col2 IN (?, ?, ?)

像这样使用参数数量未知的参数化查询是不可能的。 另一方面,为了安全起见,您必须使用参数化查询。 解决方法是在知道参数列表中的参数个数的基础上,使用IN形式构造一个参数化查询:

params = get_params_from_file_or_somewhere_else() # wherever you have the params.

qmarks = ', '.join('?' for param in params) # string with the "right" number of "?"

sql = 'SELECT * FROM mf WHERE col2 IN ({});'.format(qmarks)

cursor.execute(sql, params)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM