python - 将 Django 二进制字段转换为数组

标签 python arrays django oracle blob

我将 Django 与旧版 Oracle 数据库结合使用。在这个数据库中是一个保存为 blob 的数组,我想用 Django 读取它。 Model 类是使用 manage.py inspectdb 命令自动创建的。

class myTable(models.Model):
     myRow = models.BinaryField(blank=True, null=True)

如何将二进制字段转换为数组?

谢谢。

最佳答案

我使用 struct 解决了这个问题python中的模块。 在我的例子中,打包在 myRow 二进制字段中的向量表示如下:

32 bit encoding | 32 bit number of elemnets (n) | n * encoding size 

例如对于双向量:

    from struct import *

def getBlobVectorValues(blobData, formatStr):
    return unpack_from(formatStr,blobData, offset=8)

def getBlobVectorSize(blobData):
    blobSize = unpack_from('!I',blobData, offset=4)
    return blobSize[0]

def readBlob(blobData):
    blobEncoding = unpack_from('!I',blobData, offset=0)
    formatStr = "!"

    if (blobEncoding[0] == 23):       #encoding vector<double> 

        vectorSize = getBlobVectorSize(blobData)       
        for x in range(0, vectorSize):
            formatStr += "d"

    else:
        raise ValueError("Unexpected blob encoding: %d" % blobEncoding[0])

    return getBlobVectorValues(blobData,formatStr)

关于python - 将 Django 二进制字段转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631799/

相关文章:

python - redis 比订阅者更快,无法获取所有数据

c++ - 将数组分成 k 个连续的分区,使得最大分区的总和最小

c++ - 从 C++ 中的函数返回多个数组

django - 如何将 django 日志文件保存在 aws 弹性 beantalk 中托管的 django 应用程序的 s3 存储桶中

django - 如何在 Django 中对 post_migrate 信号执行代码?

python - 查找在 wav 文件中播放的音符的时间戳

python - 如何转义特殊字符以使用 LXML 编写 XML

Python 调试器 (pdb) 停止处理向上/向下箭头,而是显示 ^[[A

html - 如何在 bootstrap col 中垂直居中 div

arrays - 通过verilog中的模块传递数组