扫码关注官方订阅号
我有以下的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),或者使用"named styles" (:fee, :fie, :fo) 或者 (%(fee)s, %(fie)s, %(fo)s),在这种情况下,你需要将一个字典作为第二个参数传递给execute函数)。检查你正在使用的DB API模块中的paramstyle字符串常量,并查看http://www.python.org/dev/peps/pep-0249/上的paramstyle,了解所有的参数传递方式!
VALUES
(:1, :2, :3)
(:fee, :fie, :fo)
(%(fee)s, %(fie)s, %(fo)s)
execute
paramstyle
请注意参数是作为一个元组传递的,(a, b, c)。如果您只传递一个参数,元组需要以逗号结尾,(a,)。
(a, b, c)
(a,)
数据库API会对变量进行适当的转义和引用。请注意不要使用字符串格式化运算符(%),因为
%
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不同的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),或者使用"named styles"(:fee, :fie, :fo)或者(%(fee)s, %(fie)s, %(fo)s),在这种情况下,你需要将一个字典作为第二个参数传递给execute函数)。检查你正在使用的DB API模块中的paramstyle字符串常量,并查看http://www.python.org/dev/peps/pep-0249/上的paramstyle,了解所有的参数传递方式!cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))请注意参数是作为一个元组传递的,
(a, b, c)。如果您只传递一个参数,元组需要以逗号结尾,(a,)。数据库API会对变量进行适当的转义和引用。请注意不要使用字符串格式化运算符(
%),因为