0

我有一个程序,我将在其中将我的代码生成的哈希值与我的 mysql 数据库中的哈希值进行比较。

因此,在生成检查值后,我有:

hash to be compared: 78ff0103440dcea01f36438a71bdf28f 
hash value from db: (('78ff0103440dcea01f36438a71bdf28f',),)

来自 DB 的哈希值是通过使用以下内容输出的:

db_hash.fetchone()

这就是为什么它包含 (('',),) 符号的原因。

但是我尝试在要比较的散列中附加相同的符号,但它仍然不能正确等同。

我很困惑,因为它应该只是一个简单的比较

if hash == result:
 do some code
else:
 do some code

如果您知道这是什么,请回答:)

4

1 回答 1

3

Python 的 MySQL 适配器将行作为值的元组返回- 在这种情况下,您将收到一行一列的完整结果集。要获得它的价值,只需执行以下操作:

dbResult # this is (('78ff0103440dcea01f36438a71bdf28f',),)
dbResult[0][0] # this is '78ff0103440dcea01f36438a71bdf28f'

当然,如果您的查询不同(或未返回任何行),这将引发错误。理想情况下,您应该首先检查返回的行数 ( len(dbResult))。每行中的列数将是一致的。

于 2012-10-03T16:15:12.180 回答