[英]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.