Ошибка программирования: предоставлено неверное количество привязок. Текущий оператор использует 1, и есть 40 предоставленных - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть пользовательский ввод, в котором я хочу ввести идентификатор пользователя и получить идентификаторы песен, связанные с этим пользователем. У меня проблемы с этим из-за ошибок вокруг курсора.

https://imgur.com/a/uzVeNoo - База данных, из которой я пытаюсь получить информацию.

import pyodbc    
import MySQLdb
import sqlite3 

MusicData = sqlite3.connect("D:\lastfm-dataset-360K\msd.sqlite3")

randomVariable = raw_input('Enter something: ')
cursor = MusicData.cursor()
MusicData = "SELECT songID FROM train WHERE userID=?"
result = cursor.execute(MusicData,randomVariable)
print result

Когда я ввожу идентификатор пользователя, я ожидаю получить идентификатор песни, связанный с этим пользователем, однако я получаю:

---------------------------------------------------------------------------
ProgrammingError                          Traceback (most recent call last)
<ipython-input-16-edd40392d38f> in <module>()
     25 cursor = MusicData.cursor()
     26 MusicData = "SELECT songID FROM train WHERE userID=?"
---> 27 result = cursor.execute(MusicData,randomVariable)
     28 print result
     29 

ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 40 supplied.

1 Ответ

1 голос
/ 05 апреля 2019

Здесь уже должен быть дан ответ: sqlite3.ProgrammingError: указано неверное количество привязок. В текущем операторе используется 1, и есть 74 предоставленных

Хотя, если коротко, то второй параметр в вашем вызове execute, как ожидается, будет кортежем, а не просто значением, поэтому перенесите randomVariable следующим образом:

cursor.execute(MusicData,(randomVariable,))

Надеюсь, это поможет!

Почему он считает, что вы указали 40 параметров, потому что он перебирает вашу входную строку, думая, что каждый символ - это параметр, который вы намеревались заполнить.

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