我创建了一个登录窗口,并且有一个表“peerlist”,其中包含名称,用户名和密码。我想验证表中的用户名和密码。
username1包含我从登录窗口获取的用户名。我尝试使用username1检索密码。
cursor.execute( "SELECT password FROM peerlist WHERE username=?",username1)
但是出现了错误
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current
statement uses 1, and there are 3 supplied.
答案 0 :(得分:6)
使用元组作为参数:
cursor.execute( "SELECT password FROM peerlist WHERE username=?", (username1,))
参数应该是元组或列表(序列);但是字符串也是一个序列(它有一个长度,你可以解决各个字符),所以你给.execute()
调用了len(username1)
个字符序列而不是一个参数。用户名是3个字符长,因此出现错误信息。
答案 1 :(得分:-3)
这是个坏主意,会导致SQL注入。详情请参阅http://docs.python.org/2/library/sqlite3.html
cursor.execute( "SELECT password FROM peerlist WHERE username=%s"%(username1))