嗨,我正在尝试在tkinter中创建一个简单的登录模块,我从用户通过输入小部件输入,并通过if循环将该密码与数据库中的密码进行比较。。。但是由于某些原因密码不匹配,所以我尝试了一些测试,结果它没有匹配。。。。在
import sqlite3
conn=sqlite3.connect('auth_rWebsites.db')
c=conn.cursor()
def check_password(key):
thePass= c.execute("SELECT pass FROM user_pass")
if key == thePass:
print("right Password")
else:
print("Wrong Password")
rows= c.execute("SELECT * FROM user_pass")
for row in rows:
print row
check_password("root")
这是我写的上面的简单测试代码。。 输出是
^{pr2}$所以有人请解释一下为什么会发生这种情况,我要做些什么来匹配它。。。。在
thePass
是一个iterable,yeildstuple
s,key
是一个字符串。在通常,pythondbapi总是以元组的形式返回数据库行,因为您可以在一个语句中选择多个内容。该规范没有使用需要查看查询来确定行的返回类型(对于数据库api和调用方),而是要求始终返回一个元组。在
您需要正确地将
key
与该行进行比较。。。在注意,这可能不是你真正想要的。它所做的只是验证
^{pr2}$user_pass
表中的一行是否具有pass
值。更可能的情况是,您需要根据用户名筛选查询,然后检查密码:c.execute("SELECT pass FROM user_pass")
返回的是元组,不是字符串,key
是字符串。您需要从元组中获取第一个值,并将其与您的key
参数进行比较,因此将函数更改为:相关问题 更多 >
编程相关推荐