Dynamodb добавляет или обновляет ключ в dict

#python-3.x #dictionary #amazon-dynamodb

#python-3.x #словарь #amazon-dynamodb

Вопрос:

У меня есть таблица dynamodb со следующей структурой:

 'Items': [
   {'user_id': 'myuser',
    'owes_to': {
         'youruser': '10',
         'user3': '20'
       }
   }]
 

Возможно ли в dynamodb создать новый пользовательский ключ owes_to или, если он уже существует, добавить к значению этого ключа?

В примере в двух вызовах:

  1. Добавьте ‘user4’ со значением 20, оно не существует, поэтому создайте ключ user4 со значением 20)
  2. В следующий раз обновите значение user4 от 20 до 40, на этот раз ключ уже существовал, поэтому добавьте 20 к существующему значению

Ответ №1:

Возможно, выражение обновления будет похоже на это:

 update_request = {
    Key={'user_id': ':id'},
    UpdateExpression='SET owes_to.#user_name = if_not_exists(owes_to.#user_name, :default_val)   :val',
    ExpressionAttributeNames={
        '#user_name': <your_user_name>
    }
    ExpressionAttributeValues={
        ':id': 'myuser',
        ':val': <your_update_value>,
        ':default_val': 0
    }
}
 

Обратите внимание на if_not_exists(owes_to.#user_name, :default_val) конструкцию. Он будет принимать значение пользователя, если оно существует, или принимать значение, указанное в :default_val , если оно не существует.
Подробнее о добавлении и обновлении значений карты в официальных документах