我遇到了使用Django Models存儲在Postgres數據庫中的二進制數據(使用os.urandom(BLOCK_SIZE)
創建)的情況。使用Django和Postgres在數據庫中存儲十六進制數據
我讀過幾個關於Django如何還不支持Bytea(VARBINARY)字段類型的參考。我發現了一個參考here,但不知道從哪裏得到這個庫(django_postgresql)。
我目前在Ubuntu 12.04上使用Python 2.7和Django 1.4 - 如果有幫助的話。
我讀過一些建議作爲解決這個問題的方法是在存儲它之前將我的數據轉換爲十六進制。
import binascii
key = binascii.hexlify(value)
好吧,現在是什麼?我想這個值保存到數據庫中,但得到的錯誤:
invalid byte sequence for encoding "UTF8": 0xd6c2
好,哪個數據字段類型,我應該用它來做到這一點?
key = models.TextField(max_length = 200)
?
key = models.CharField(max_length = 200)
?
key = models.???(max_length = 200)
???我想遠離創建我自己的custom field type。首先,我對Django非常陌生,並且不願意這樣做。其次,我對數據庫相當陌生,所以我不知道從哪裏開始定義這樣的東西。
有什麼建議嗎?
什麼正在使用這些數據,以及如何大是'BLOCK_SIZE'是它可能會改變? – 2012-07-05 20:28:36
@ Jon Clements這個數據代表了密碼學的一個關鍵。在這種情況下'BLOCK_SIZE'是32字節('os.urandom(32)')。 'BLOCK_SIZE'不會改變。 – Rico 2012-07-05 20:32:44
檢查'type(key)'是'str'還是'unicode'。您可能需要'key.encode(「ASCII」)'如果unicode的... – 2012-07-05 20:41:17