Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简单密码检查类型错误:“非类型”对象没有属性“\uuuu getitem\uuuu”_Python_Sql - Fatal编程技术网

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

Python 简单密码检查类型错误:“非类型”对象没有属性“\uuuu getitem\uuuu”,python,sql,Python,Sql,我得到了这个错误,突出显示的代码是 passW[0] 这个错误到底意味着什么?这是一个简单的比较,但由于它作为元组返回,所以我无法进行比较。我需要将密码更改为元组吗?还是我必须用另一种方法来证明它是平等的? 这是我的全部代码。这是一个简单的密码检查 def check_login(db, useremail, password): """returns True if password matches stored""" cur = db.cursor() passwo

我得到了这个错误,突出显示的代码是 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
没有匹配项时返回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
或者如任雅所言:

return cur.fetchone() is not None

在变量上应用[]运算符时,将调用方法uuu getitem。此错误意味着passW的类型为None,并且没有uu getitem_uu方法。我没有任何数据库方面的经验,但我认为,无法从数据库中检索passW。对于从用户处选择电子邮件,您可能也有相同的问题,其中电子邮件=?查询您可以使用单行返回db.cursor.querySELECT*完成整个功能,其中email=?密码=?,useremail,db.cryptopassword.fetchone不是None。更简短的是:return cur.fechone不是nonehe,我不知道为什么我没有这么做。谢谢我会更新我的答案。谢谢各位Aya和你们的建议为我修正了:D
return cur.fetchone() is not None