如何修复 SQLite3 Python 'Incorrect number of bindings supplied. The current statement uses 1, ... supplied'
问题:
你正在尝试在 SQLite3 数据库上运行带占位符的简单 SQL 查询,例如:
sqlite_incorrect_bindings_fix.py
name = "mytable"
conn.execute("SELECT sql FROM sqlite_master WHERE name=?;", name)但你得到类似这样的异常:
sqlite3_bindings_error.txt
---------------------------------------------------------------------------
ProgrammingError Traceback (most recent call last)
<ipython-input-55-e385cf40fd72> in <module>
1 name = "mytable"
----> 2 conn.execute("SELECT sql FROM sqlite_master WHERE type='table' AND name=?;", name)
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 7 supplied.解决方案
你需要使用列表作为 conn.execute(...) 的第二个参数!
由于你只给函数一个字符串,该字符串被解释为字符列表。
在我们上面的示例中,你只需将 name 用方括号包裹为 [name]:
sqlite3_bindings_fix.py
name = "mytable"
conn.execute("SELECT sql FROM sqlite_master WHERE name=?;", [name])If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow