在 Bcrypt (Python) 中使用 SQLite 返回作为密码字段

我想检查输入的密码是否与数据库中存储的密码相同,但是当我使用它时,bcrypt.checkpw()它会返回一个错误,指出它需要一个字符串或字节,因为 SQL 查询返回一个元组。我找不到将数据库响应转换为元组中的字节以使其兼容的方法。


sql = ''' SELECT password FROM user_data WHERE username=? '''


username = input('Input username: ')

password = bytes(input('Input Password: '), encoding='utf-8')


cur = conn.cursor()

cur.execute(sql, (username,))

rows = cur.fetchall()


for row in rows:


    if bcrypt.checkpw(password, row):

        details = (user_id, username, password)

        print('logged in')


        return details


        break


阿波罗的战车
浏览 40回答 1
1回答

杨魅力

只需在函数中添加 row[0] 即可解决问题,因为它返回元组内的第一个(也是唯一一个)值。换句话说,将其视为列表当其他值未使用时从元组中提取 a 值
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python