Как мы можем получить такую же последовательность столбцов в результате запроса 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 ответ
Вы не можете контролировать порядок элементов в словаре. Если вам нужны вещи в определенном порядке, вы, вероятно, должны переосмыслить, почему это так. Если порядок важен для чего-то, что находится вне вашего контроля, вы всегда можете взять результат и поместить значения в новый объект, который упорядочен так, как вы хотите. Если этот порядок уникален для каждого элемента, вы можете сохранить его в атрибуте элемента. Вообще говоря, это не то, о чем вам следует беспокоиться.