使用 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
我想检查输入的密码是否与数据库中存储的密码相同,但是当我使用 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