我有以下Python代码:
cursor.execute("INSERT INTO table VALUES var1, var2, var3,")
其中 var1 是整数,var2 和 var3 是字符串。
var1
var2
var3
如何在不使用 Python 的情况下编写变量名称(将其作为查询文本的一部分)?
Python DB-API 的不同实现允许使用不同的占位符,因此您需要找出您正在使用的占位符 - 可能是(例如使用 MySQLdb):
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
或(例如,使用 Python 标准库中的 sqlite3):
cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))
或其他(在 VALUES 之后,您可以有 (:1, :2, :3) 或“命名样式” (:fee, : fie, :fo) 或 (%(fee)s, %(fie)s, %(fo)s) ,其中您将字典而不是映射作为第二个参数传递给执行)。检查您正在使用的 DB API 模块中的 paramstyle 字符串常量,并在 http://www.python.org/dev/peps/pep-0249/ 查看所有参数传递样式是什么!
VALUES
(:1, :2, :3)
(:fee, : fie, :fo)
(%(fee)s, %(fie)s, %(fo)s)
执行
paramstyle
请注意,参数以元组形式传递,(a, b, c)。如果您传递单个参数,则元组需要以逗号结尾,(a,)。
(a, b, c)
(a,)
数据库 API 对变量进行正确的转义和引用。注意不要使用字符串格式化运算符(%),因为
%
Python DB-API 的不同实现允许使用不同的占位符,因此您需要找出您正在使用的占位符 - 可能是(例如使用 MySQLdb):
或(例如,使用 Python 标准库中的 sqlite3):
或其他(在
VALUES
之后,您可以有(:1, :2, :3)
或“命名样式”(:fee, : fie, :fo)
或(%(fee)s, %(fie)s, %(fo)s)
,其中您将字典而不是映射作为第二个参数传递给执行
)。检查您正在使用的 DB API 模块中的paramstyle
字符串常量,并在 http://www.python.org/dev/peps/pep-0249/ 查看所有参数传递样式是什么!请注意,参数以元组形式传递,
(a, b, c)
。如果您传递单个参数,则元组需要以逗号结尾,(a,)
。数据库 API 对变量进行正确的转义和引用。注意不要使用字符串格式化运算符(
%
),因为