我有一个用户输入,我想输入一个用户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.
答案 0 :(得分:1)
它的简短之处在于,它是您的execute调用中的第二个参数,它应该是一个元组而不是仅是值,因此将randomVariable包装如下:
cursor.execute(MusicData,(randomVariable,))
希望这会有所帮助!
为什么认为您提供了40个参数,是因为它在输入字符串上进行了迭代,认为每个字符都是您要填写的参数。