![](/img/trans.png)
[英]TypeError(“'NoneType' object has no attribute '__getitem__'”,)
[英]Simple password check TypeError: 'NoneType' object has no attribute '__getitem__'
我收到此错误,突出显示的代码是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
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
或如詹亚建议的那样:
return cur.fetchone() is not None
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.