我遇到了使用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