在Python SQLite语句中插入字符串

2 投票
1 回答
5555 浏览
提问于 2025-04-18 14:42

我正在尝试在Python中将一个字符串插入到SQLite的查询语句里。当我试着运行这段代码时:

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还很陌生。任何帮助都将非常感谢!

1 个回答

5

不要用字符串格式化的方式把查询参数放进查询里,这样会导致SQL注入的风险,还会遇到需要转义的字符、数据类型转换等问题。

去掉?周围的引号,继续使用参数化的查询参数:

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

因为?周围的引号,让sqlite把?当成了字符串,而不是占位符。

还可以看看类似的问题:

撰写回答