Python中如何在SQL语句中使用变量?
P粉200138510
2023-08-20 17:35:10
<p>我有以下的Python代码:</p>
<pre class="brush:py;toolbar:false;">cursor.execute("INSERT INTO table VALUES var1, var2, var3,")
</pre>
<p>其中<code>var1</code>是一个整数,<code>var2</code>和<code>var3</code>是字符串。</p>
<p>我该如何在Python中写变量名而不让它们被包含在查询文本中?</p>
Python DB-API的不同实现允许使用不同的占位符,所以你需要找出你正在使用的是哪个 -- 例如(使用MySQLdb):
或者(使用Python标准库中的sqlite3):
或者其他的(在
VALUES
之后你可以有(:1, :2, :3)
,或者"命名样式"(:fee, :fie, :fo)
或者(%(fee)s, %(fie)s, %(fo)s)
,在execute
的第二个参数中传递一个字典而不是一个映射)。检查你正在使用的DB API模块中的paramstyle
字符串常量,并在http://www.python.org/dev/peps/pep-0249/上查找paramstyle,以了解所有的参数传递样式!请注意参数被传递为一个元组,
(a, b, c)
。如果你只传递一个参数,元组需要以逗号结尾,(a,)
。数据库API会对变量进行适当的转义和引用。请注意不要使用字符串格式化运算符(
%
),因为