python - 在Python SQLite语句中插入字符串

标签 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新手。任何帮助将不胜感激!

最佳答案

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

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

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

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

另请参阅类似问题:

关于python - 在Python SQLite语句中插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948269/

相关文章:

python - 如何在 python 2.7 中打印 1 的最大连续出现次数?

swift - 在 Swift 中,如何创建 String 的后代?我在尝试这样做时收到错误 "Inheritance from non-protocol, non-class type ' String'"

r - 查找字符串中重叠的长度

android - 如何从表中的一列中选择不同的值?

c - 在查询中填充/插入值

python - multiprocessing.Pool 中的 up.close 和 p.join

python - 将具有混合数据和类别的 pandas DataFrame 存储到 hdf5 中

python - 'METHODNAME' 作为客户端方法与扭曲的 irc _'METHODNAME'

python - 如何使字符串中的所有内容都小写

SQL 按整数值的连续范围分组