ErrorCode: InvalidBlobType при добавлении в BLOB-объект - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь добавить новые строки json в существующий файл json в контейнере. Ниже приведен мой код:

import json
import os

from azure.storage.blob import (
    BlockBlobService, AppendBlobService
)
from DBConnection import account_name, container_name, account_key


def getData(self, resp, filename):

        blobService = BlockBlobService(account_name=account_name, account_key=account_key)
        appendblobservice = AppendBlobService(account_name=account_name, account_key=account_key)

        resp = json.dumps(self.resp) #CONVERT FROM DICT TO STR

        filename = self.filename + ".json" #eg: 'ww1_abcded_202002031100.json'

        file_exist = blobService.exists(container_name, filename)

        if file_exist is False:
            print("inside IF")
            blobService.create_blob_from_text(container_name, filename, self.resp)


        else:
            print("Inside else")
            appendblobservice.append_blob_from_text(container_name, filename, self.resp)
            print("2345675t43")

Я получаю ошибку на append_blob_from_text и выдаю следующую ошибку:

azure .common.AzureConflictHttpError: Тип BLOB-объекта: недействителен для этой операции. ErrorCode: InvalidBlobType InvalidBlobType Недопустимый тип BLOB-объекта для этой операции.

1 Ответ

0 голосов
/ 05 февраля 2020

Я полагаю, что вы получаете эту ошибку, потому что вы вызываете метод, применимый только для Append Blob для Block Blob.

Ваш следующий код создает блочный блоб:

blobService.create_blob_from_text(container_name, filename, self.resp)

Однако вы пытаетесь выполнить операцию только с добавлением большого двоичного объекта:

appendblobservice.append_blob_from_text(container_name, filename, self.resp)

Из-за этого вы получаете эту ошибку.

Два возможных решения:

  1. Создайте добавочный BLOB-объект вместо блочного BLOB-объекта, если вы хотите sh использовать добавочные BLOB-объекты. Вы можете использовать create_blob для создания пустого добавочного большого двоичного объекта, а затем добавлять содержимое, используя метод append_blob_from_text.
  2. Если вы используете sh для использования блочного большого объекта, то для добавления сначала вам нужно скачать содержимое блоба, используя метод get_blob_to_text, добавить новое содержимое и затем заново загрузить блоб, используя метод create_blob_from_text.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...