簡體   English   中英

正確的方法將bytea從Postgres轉換回python中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM