On Fri, Aug 21, 2015 at 11:39 AM, Cecil Westerhof <ce...@decebal.nl> wrote: > I have the following with sqlite3: > urls = c.execute('SELECT URL FROM LINKS WHERE URL = ?', url).fetchall() > > But this gives: > Traceback (most recent call last): > File "./createDB.py", line 52, in <module> > urls = c.execute('SELECT URL FROM LINKS WHERE URL = ?', url).fetchall() > sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current > statement uses 1, and there are 40 supplied. > > The number of bindings is the length of the string. > What is happening here? Why is every character of the string seen as a > binding, instead of the string being the binding?
Because the execute method expects the bindings to be passed as a sequence, which means to pass a single binding you need to wrap it in a sequence: `c.execute('SELECT url FROM links WHERE url = ?', (url,))` -- Zach -- https://mail.python.org/mailman/listinfo/python-list