首页 > 解决方案 > 从 Azure 表存储中提取字节值

问题描述

我正在编写一个 python 脚本来从 Azure 表存储中查询数据。

我要提取的数据是二进制类型(信息被序列化并存储)

当我使用entity['BodyChunk01]运行代码时, 我将值返回为

'BodyChunk01': <azure.data.tables._entity.EntityProperty object at 0x0DDFFB10>

(栏目名称为 BodyChunk01)

当我使用stackoverflow上另一个问题中提到的entity['BodyChunk01'].value时,它​​返回反序列化的 json 数据,但我想要存储的实际序列化值,如下面的屏幕截图所示

样本字节数据

标签: pythonazureazure-table-storageazure-tablequery

解决方案


我相信你想要完成的事情是不可能的。我查看了 SDK 代码here,似乎 SDK 正在根据代码强制进行转换here

def _decode_base64_to_bytes(data):
    if isinstance(data, six.text_type):
        data = data.encode("utf-8")
    return base64.b64decode(data)

您可能想在此处提出问题:https ://github.com/Azure/azure-sdk-for-python/issues并将其提请 SDK 团队注意。

二进制数据被转换为“Base64 编码字符串”,然后保存。您需要做的是进行 Base64 解码以获取字节数组。

我不太熟悉 Python,但你可以这样做:

import base64
decodedBytes = base64.b64decode(entity['BodyChunk01'].value)
decodedStr = str(decodedBytes, "utf-8")

推荐阅读