Как мы можем получить такую ​​же последовательность столбцов в результате запроса DynamoDB, присутствующего в БД?

Я ищу способ получить результаты запроса (столбцы) boto3 DynamoDB, которые я вставляю в БД.

Моя операция вставки:

      DYNAMO_CLIENT.put_item(
            TableName=TABLE_NAME,
            Item={
                "id": {"S": data.id},
                "name": {"S": data.name},
                "account_id": {"S": data.provider_account_id},
                "provider": {"S": data.provider},
                "is_enabled" : {'BOOL':data.enabled)}
           },
)

Мой запрос:

      response = table.query(
                IndexName='provider-id-index',
                KeyConditionExpression=Key('provider').eq(provider)
            )
        for item in response["Items"]:
            print(item.values())

Вывод, который я получаю:

      {"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}

Ожидая:

      {"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}

Я знаю response["Items"] возвращение списка dictобъекты (неупорядоченные). Но я ищу способ сделать это.

Я пробовал с collections.OrderdDict(item.values()[0]) но не повезло.

Любое решение этой проблемы будет принято.

Спасибо.

1 ответ

Вы не можете контролировать порядок элементов в словаре. Если вам нужны вещи в определенном порядке, вы, вероятно, должны переосмыслить, почему это так. Если порядок важен для чего-то, что находится вне вашего контроля, вы всегда можете взять результат и поместить значения в новый объект, который упорядочен так, как вы хотите. Если этот порядок уникален для каждого элемента, вы можете сохранить его в атрибуте элемента. Вообще говоря, это не то, о чем вам следует беспокоиться.

Другие вопросы по тегам