使用 SQLite return 作为 Bcrypt (Python) 中的密码字段

Using an SQLite return as a password field within Bcrypt (Python)

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

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

只需在函数中添加 row[0] 即可解决问题,因为它 returns 是元组中的第一个(也是唯一一个)值。

换句话说,把它当作一个列表

Extracting the a value from a tuple when the other values are unused