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()None を返します。実際、これは:

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 に答える