问题描述
我想检查输入的密码是否与数据库中存储的密码相同,但是当我使用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
解决方法
在函数中简单地添加row [0]就解决了这个问题,因为它返回了元组中的第一个(也是唯一的)值。
像列表一样处理
Extracting the a value from a tuple when the other values are unused