ProgrammingError:提供的绑定数不正确。当前语句使用1,并且提供了40个

时间:2019-04-05 14:03:25

标签: python sql input sqlite jupyter-notebook

我有一个用户输入,我想输入一个用户ID并检索与该用户相关的songID。我因为光标周围的错误而遇到麻烦。

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

当我输入userID时,我希望获得与该用户相关联的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.

1 个答案:

答案 0 :(得分:1)

应该已经在这里回答:sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 74 supplied

它的简短之处在于,它是您的execute调用中的第二个参数,它应该是一个元组而不是仅是值,因此将randomVariable包装如下:

cursor.execute(MusicData,(randomVariable,))

希望这会有所帮助!

为什么认为您提供了40个参数,是因为它在输入字符串上进行了迭代,认为每个字符都是您要填写的参数。