[英]Proper way to convert bytea from Postgres back to a string in python
我有一個小腳本,我正在生成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”,我想將其恢復為原始字符串以進行比較。 我不確定我是否遺漏了一些明顯的東西,
既然你要求Postgres解碼你的十六進制字符串並將其存儲為二進制,你應該讓postgres在輸出時將其編碼回十六進制。
SELECT encode(some_hash, 'hex'), * FROM some_table WHERE some_hash in decode(another_hash, 'hex')
或者,您可以在python中進行編碼。 試試binascii.hexlify(數據) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.