我想通过类似于此的python运行对sql数据库的查询:
cursor.execute('SELECT * FROM mf WHERE col2 = ? or ?', (country))
但是,我想在代码的这一部分中包含一些未指定数量或选项,并且用户在单独的参数文件中指定国家/地区,即我不知道有多少?
到因为它的变量而放入代码。是否可以在SQL代码中执行此操作?
答案 0 :(得分:1)
首先,您的SQL代码无效。您需要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)