Python动态参数化查询

时间:2014-09-08 22:47:02

标签: python python-2.7 query-parameters parameterized-query

我希望动态创建一个构建查询,我可以通过参数来填充。例如。类似的东西:

INSERT INTO Table (Col1, Col2, Col3, ...) VALUES (%s, %s, %s, ...)

然后我想填充它,如图所示 How to put parameterized sql query into variable and then execute in Python?

sql = "INSERT INTO table VALUES (%s, %s, %s)"
args= var1, var2, var3
cursor.execute(sql, args)

构建上面的查询字符串应该非常简单,但是我不确定如何构建args列表。一旦我能做到这一点,其余的应该很容易。

2 个答案:

答案 0 :(得分:0)

看起来我的问题比我想象的要容易,看起来数组的行为就像python中的列表一样。以下内容给了我所需要的内容:

results = []

results.append("a")
results.append("b")
results.append("c")
results.append("d")

print results

我可以使用上面的内容来制作我的arg列表。

答案 1 :(得分:0)

我通常使用这样的东西来实现你描述的内容:

>>> def prepquery(qrystr, args):
...   # Assumes Qry Str has a %s in it instead of column placeholders.
...   return qrystr % ', '.join('?' * len(args)) # ['%s'] * len(args), depending on DB.
...
>>>
>>> prepquery('Insert Into Table Values (%s)', range(5))
'Insert Into Table Values (?, ?, ?, ?, ?)'