在Python SQLite语句中插入字符串
我正在尝试在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把?
当成了字符串,而不是占位符。
还可以看看类似的问题: