我有一个程序,我将在其中将代码生成的哈希值与 mysql 数据库中的哈希值进行比较。
因此,在生成检查值后,我有:
hash to be compared: 78ff0103440dcea01f36438a71bdf28f hash value from db: (('78ff0103440dcea01f36438a71bdf28f',),)
来自数据库的哈希值是通过使用以下内容输出的:
db_hash.fetchone()
这就是为什么它包含 (('',),) 符号。
但是我尝试将相同的符号与要比较的哈希值一起附加,但它仍然无法正确等同。
我很困惑,因为它应该只是通过
进行简单比较if hash == result:
do some code
else:
do some code
如果您知道这是什么,请回答:)
最佳答案
Python 的 MySQL 适配器以值的元组形式返回行 - 在这种情况下,您将收到一行、一列的完整结果集。要获取其值,只需执行以下操作:
dbResult # this is (('78ff0103440dcea01f36438a71bdf28f',),)
dbResult[0][0] # this is '78ff0103440dcea01f36438a71bdf28f'
当然,如果您的查询不同(或没有返回任何行),则会引发错误。理想情况下,您应该首先检查返回的行数 (len(dbResult)
)。每行的列数将保持一致。
关于mysql db 的 Python 结果与实际值不匹配 : comparison of values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712532/