Чтение из базы данных с SQLite и Python: указано неверное количество привязок - PullRequest
3 голосов
/ 03 апреля 2012

Я читаю из базы данных с помощью следующего скрипта Python:

cur.execute("SELECT * FROM pending where user = ?", (ID))

Где ID - это чье-то имя, в данном случае "Джонатан".

Однако, когда я пытаюсь запустить этот скрипт, я получаю сообщение об ошибке

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/cherrypy/_cprequest.py", line 606, in respond
    cherrypy.response.body = self.handler()
  File "/usr/lib/pymodules/python2.7/cherrypy/_cpdispatch.py", line 25, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "proj1base.py", line 470, in editFriends
    cur.execute("SELECT * FROM pending where user = ?", (ID))
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.

Я очень новичок в SQLite, так что, полагаю, я просто сделал очень глупую ошибку в синтаксисе. Однако, проведя поиск в Интернете некоторое время, я не могу найти ничего другого, чем я занимаюсь.

Любая помощь будет высоко ценится. Или, если вам нужно больше кода, пожалуйста, дайте мне знать.

Спасибо

1 Ответ

9 голосов
/ 03 апреля 2012

Вы должны указать последовательность значений для привязки.ID - это строка, поэтому она выглядит как последовательность из 8 значений.

Вы, вероятно, думаете, что (ID) должен быть кортежем с одним элементом, но это не так.Круглые скобки не являются синтаксисом создания кортежей в Python (за исключением пустого кортежа).Запятые есть.Вместо этого используйте (ID,), чтобы получить кортеж с одним элементом.Или используйте список: [ID].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...