使用oracle后端从blob列读取原始二进制数据

时间:2012-11-07 13:18:04

标签: django oracle orm blob blobstorage

我正在使用oracle legacy DB,需要读取和写入二进制数据(png图像和MDL Molfiles)。 Django的inspectdb命令为这些列生成了文本字段,说这只是猜测。 现在,当我尝试从此类字段中检索值时,我得到: DjangoUnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0x89:无效的起始字节。 错误。

有没有办法读取和写入这些列? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

class BlobField(models.TextField):
    description = "Stores raw binary data"

    __metaclass__ = models.SubfieldBase

    def __init__(self, *args, **kwds):
        kwds = _adjust_keywords(kwds)
        super(BlobField, self).__init__(*args, **kwds)

    def get_internal_type(self):
        return "BlobField"

    def get_db_prep_value(self, value, connection=None, prepared=False):
        return value

    def to_python(self, value):
        return Blob(value)