我收到此错误,突出显示的代码是 的 PASSW [0]
这个错误究竟意味着什么?这是一个简单的比较,但由于它作为一个元组返回,我无法比较它。我需要将密码更改为元组吗?或者我是否必须采取相反的方式才能实现平等? 这是我的完整代码。这是一个简单的密码检查。
def check_login(db, useremail, password):
"""returns True if password matches stored"""
cur = db.cursor()
password1 = db.crypt(password)
ur = "SELECT email FROM users WHERE email = ?"
cur.execute(ur, (useremail,))
user = cur.fetchone()
if user[0] == useremail:
pas = "SELECT password FROM users WHERE email = ? AND password = ?"
cur.execute(pas, (useremail, password1,))
passW = cur.fetchone()
if passW[0] == password1:
return True
else:
return False
答案 0 :(得分:1)
passW = cur.fetchone()
当没有匹配时, cur.fetchone()
会返回None
。由于您从用户那里获取密码,并使用该密码和电子邮件查找,如果密码不匹配,您将找不到该行。因此,cur.fetchone()
返回None。事实上,这个:
passW = cur.fetchone()
if passW[0] == password1:
return True
else:
return False
可能只是变成:
return if cur.fetchone() is not None:
return True
return False
或者Jen-Ya建议:
return cur.fetchone() is not None