我得到這個錯誤,並突出顯示的代碼是 PASSW [0]簡單的密碼校驗類型錯誤:「NoneType」對象有沒有屬性「__getitem__」
這個錯誤是什麼恰恰意味着?這是一個簡單的比較,但它作爲一個元組返回,我無法比較它。我是否需要將密碼更改爲元組?還是我不得不做另一種方式,因爲它出來平等? 這是我的完整代碼。這是一個簡單的密碼檢查。
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
的方法'當你申請了'__getitem__'被稱爲[]'運算符在一個變量上。這個錯誤意味着,'passW'的類型是'None',並且沒有'__getitem__'方法。我對數據庫沒有任何經驗,但我認爲,無法從數據庫中檢索到該密碼。 – 2013-04-20 11:09:44
您也可能遇到'SELECT email FROM users WHERE email =?'查詢的問題。你可以用單行'return db.cursor()來完成整個函數。query(「SELECT * FROM users WHERE email =?AND password =?」,(useremail,db.crypt(password)))。fetchone()不是無「。 – Aya 2013-04-20 11:24:48