SHA1 ハッシュを生成し、hashlib の hexdigest を介してバイナリ表現を取得し、それらを bytea 列を持つ Postgres DB に格納する小さなスクリプトがあります。Postgres で次のようなクエリがあります (省略形):
SELECT * FROM some_table WHERE some_hash in decode(another_hash, 'hex')
クエリを実行すると、次のようなコードがいくつかあります。
cur.execute(query)
for hash_rep in cur:
print bhash
さて、そのprintステートメントでは、理解できない文字が出力されるか、次のように変更すると:
print str(psycopg2.Binary(bhash))
私は次のようなものを得ます:
'\214p\203\030\017K\247\373o\253'::bytea
元の文字列に戻す正しい方法は何ですか? 元の表現は「30d22d5d64efe4c5333e」のようなもので、比較のために元の文字列に戻したいと思います。明らかな何かが欠けているかどうかはわかりませんが、