我将 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/