Problem:
You are trying to run a simple SQL query with placeholders on a SQLite3 database, e.g.:
name = "mytable" conn.execute("SELECT sql FROM sqlite_master WHERE name=?;", name)
But you get an exception like this:
--------------------------------------------------------------------------- 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.
Solution:
You need to use a list as the second argument to conn.execute(...)
!
Since you only gave the function a string, the string is being interpreted as list of characters.
In our example from above, you just need to wrap name
in square brackets to read [name]
:
name = "mytable" conn.execute("SELECT sql FROM sqlite_master WHERE name=?;", [name])