1

我创建了一个登录窗口,并且有一个包含名称、用户名、密码的表“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.
4

2 回答 2

6

使用元组作为参数:

cursor.execute( "SELECT password FROM peerlist WHERE username=?", (username1,))

参数应该是元组或列表(序列);但是字符串也是一个序列(它有一个长度,你可以处理单个字符),所以你给.execute()调用一个len(username1)字符序列而不是一个参数。显然用户名是 3 个字符长,因此是错误消息。

于 2013-03-11T10:03:25.580 回答
-3

这是个坏主意,会导致 SQL 注入。详情参考http://docs.python.org/2/library/sqlite3.html

cursor.execute( "SELECT password FROM peerlist WHERE username=%s"%(username1))
于 2013-03-11T10:00:19.897 回答