我有以下Python代码:
cursor.execute("INSERT INTO table VALUES var1, var2, var3,")
其中var1
是整数,var2
和var3
是字符串。
如果没有Python将变量名作为查询文本的一部分,我如何编写变量名?
发布于 2009-05-24 01:14:24
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)
,您可以将字典而不是地图作为第二个参数传递给execute
)。检查正在使用的DB模块中的paramstyle
字符串常量,并在http://www.python.org/dev/peps/pep-0249/中查找参数样式,以了解所有参数传递样式是什么!
发布于 2009-05-23 20:28:12
http://www.amk.ca/python/writing/DB-API.html
在简单地将变量的值附加到语句中时要小心:假设有一个用户将自己命名为';DROP TABLE Users;'
--这就是为什么需要使用SQL转义,当您以适当的方式使用cursor.execute
时,Python为您提供了SQL转义。URL中的示例如下:
cursor.execute("insert into Attendees values (?, ?, ?)", (name, seminar, paid))
https://stackoverflow.com/questions/902408
复制相似问题