gpt4 book ai didi

python - 如何使用python查询SQlite,然后比较查询结果?

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:45 25 4
gpt4 key购买 nike

此代码的目的是验证使用存储在数据库中的密码和用户名输入的密码。该表包含用户名 (nick) 和密码,密码使用 db.crypt 加密。

我目前的代码包括:

def check_login(db, username, password):
"""returns True if password matches stored"""
cursor = db.cursor()
pass1 = db.crypt(password)
cursor.execute("SELECT password FROM users WHERE nick=?", (username,))
passcheck = cursor.fetchone()
if passcheck == pass1:
return True
else:
return False

但是我在运行单元测试时不断收到断言错误:

   line 29, in test_check_login
self.assertTrue(users.check_login(self.db, username, password), "Password check failed for username%s" % username)
AssertionError: False is not true : Password check failed for nick jake

当我使用 print 显示 passcheck 正在检索的内容时,它会打印正确的加密密码,但在 ('') 标签内(我相信是一个元组) .但是当我打印 cursor.fetchone() 时,它显示 None。我不确定这里出了什么问题,我对发送到函数中的密码进行了加密,以便它可以与存储在数据库中的密码正确匹配。我假设 passcheck 会检索与用户 nick 对应的密码,该密码通过该函数传递。

非常感谢任何帮助。

最佳答案

cursor.fetchone()

获取一行作为元组:

passcheck == ("hashed password", )

您必须再次比较 passcheck[0] 或解压元组:

passcheck, = cursor.fetchone()

编辑:让数据库进行比较:

cursor.execute("SELECT * FROM users WHERE username= ? and password= ?",
(username, pass1))
found = cursor.fetchone()
if found:
# user exists and password matches
else:
# user does not exist or password does not match

关于python - 如何使用python查询SQlite,然后比较查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30014178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com