在Python SQLite语句中插入字符串

时间:2014-07-25 04:48:46

标签: python string sqlite

我试图在python中的SQLite Select语句中插入一个字符串。当我尝试这段代码时:

cur.execute("SELECT * FROM DB WHERE employeeNum = '?'",(empNum,))

我收到此错误:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 1 supplied.

当我尝试此代码时:

cur.execute("SELECT * FROM DB WHERE employeeNum = '",empNum,"'")

我收到此错误:

TypeError: function takes at most 2 arguments (3 given)

如何查询此字符串?对不起,我是python的新手。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

不要使用字符串格式将查询参数插入到查询中 - 这会使sql注入成为可能,您可能会遇到需要转义的字符,数据类型转换等问题。

消除?周围的引号并继续使用参数化查询参数:

cur.execute("SELECT * FROM DB WHERE employeeNum = ?", (empNum, ))

?周围的引号使sqlite将?解释为字符串,而不是占位符。

另见类似问题:

答案 1 :(得分:2)

使用逗号连接字符串仅适用于print()。试试这个:

cur.execute("SELECT * FROM DB WHERE employeeNum = '" + empNum + "'")