Python 编程错误:提供的绑定数量不正确。当前语句使用1,提供了40个

Python 编程错误:提供的绑定数量不正确。当前语句使用1,提供了40个,python,sql,input,sqlite,jupyter-notebook,Python,Sql,Input,Sqlite,Jupyter Notebook,我有一个用户输入,我想输入一个用户ID并检索与该用户关联的songID。我在这方面遇到了问题,因为光标周围有错误 -我试图从中检索的数据库 import pyodbc import MySQLdb import sqlite3 MusicData = sqlite3.connect("D:\lastfm-dataset-360K\msd.sqlite3") randomVariable = raw_input('Enter something: ') cursor = MusicD

我有一个用户输入,我想输入一个用户ID并检索与该用户关联的songID。我在这方面遇到了问题,因为光标周围有错误

-我试图从中检索的数据库

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
当我输入用户ID时,我希望获得与该用户关联的SongID,但是我得到:

---------------------------------------------------------------------------
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.

这里应该已经回答了:

不过,简短的一点是,execute调用中的第二个参数应该是一个元组,而不仅仅是值,因此请按如下方式包装randomVariable:

cursor.executeMusicData,随机变量

希望这有帮助


它之所以认为您提供了40个参数,是因为它在迭代输入字符串,认为每个字符都是您要填写的参数。

谢谢您的帮助和解释!唯一的问题是现在我得到了错误:AttributeError:'str'对象没有属性'cursor'。我正在使用jupyter笔记本电脑,在我第一次新运行程序时它不会给出错误,我可以查询数据库,但如果我再次输入它,它会抛出错误。@T.Gilmour使用相同的变量进行数据库连接和字符串是个坏主意。。。