(“SELECT password FROM peerlist WHERE username =?”,username1)

时间:2013-03-11 09:58:47

标签: python sqlite

我创建了一个登录窗口,并且有一个表“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.

2 个答案:

答案 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))