Python动态参数化查询

0 投票
2 回答
1634 浏览
提问于 2025-04-20 13:32

我希望能动态创建一个查询,这样我就可以通过参数来填充它。比如说,像下面这样:

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

然后我想像在 这个链接中展示的那样来填充它:

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

构建上面的查询字符串应该很简单,不过我不太确定怎么构建参数列表。一旦我能做到这一点,其他的就应该简单了。

2 个回答

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 (?, ?, ?, ?, ?)'
0

看起来我的问题比我想的简单,数组在Python中表现得像列表一样。下面的代码给了我想要的结果:

results = []

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

print results

我可以用上面的代码来创建我的参数列表。

撰写回答