0

我收到此错误,突出显示的代码是 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
4

1 回答 1

1
passW = cur.fetchone()

cur.fetchone()None不匹配时返回。由于您从用户那里获取密码,并使用该密码和电子邮件进行查找,如果密码不匹配,您将找不到该行。结果,cur.fetchone()返回无。事实上,这个:

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
于 2013-04-20T11:15:15.527 回答