[英]Extracting Byte values from Azure Table Storage
我正在编写一个 python 脚本来从 Azure 表存储中查询数据。
我要提取的数据是二进制类型(信息被序列化并存储)
当我使用entity['BodyChunk01]运行代码时,我将值返回为
'BodyChunk01': <azure.data.tables._entity.EntityProperty object at 0x0DDFFB10>
(栏目名称为 BodyChunk01)
当我使用stackoverflow上另一个问题中提到的entity['BodyChunk01'].value时,它返回反序列化的 json 数据,但我想要存储的实际序列化值,如下面的屏幕截图所示
我相信你想要完成的事情是不可能的。 我here
查找了 SDK 代码,似乎 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 团队的注意。
我不太熟悉 Python 但你可以这样做:
import base64 decodedBytes = base64.b64decode(entity['BodyChunk01'].value) decodedStr = str(decodedBytes, "utf-8")
如果您想要原始格式的实体,您可以包含 header 以不返回 OData 类型,这将通过反序列化。 Ints、float、boolean 被转换为它们各自的类型,但二进制实体属性将作为原始字符串返回。 这是一个代码片段:
headers = {'Accept': 'application/json;odata=nometadata'}
received_entity = table_client.get_entity(
row_key=entity['RowKey'],
partition_key=entity['PartitionKey'],
headers=headers
)
print(received_entity['BodyChunk01'])
免责声明:我在 Azure SDK 为 Python 团队工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.