简单密码检查类型错误:“NoneType”对象没有属性“\u getitem”

2024-09-29 02:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了这个错误,突出显示的代码是 通过[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

Tags: 代码fromtrue密码dbifemail错误
1条回答
网友
1楼 · 发布于 2024-09-29 02:21:18
passW = cur.fetchone()

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

^{pr2}$

可能会变成:

return if cur.fetchone() is not None:
    return True
return False

或如珍雅所说:

return cur.fetchone() is not None

相关问题 更多 >