#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
или, если он уже существует, добавить к значению этого ключа?
В примере в двух вызовах:
- Добавьте ‘user4’ со значением 20, оно не существует, поэтому создайте ключ user4 со значением 20)
- В следующий раз обновите значение 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
, если оно не существует.
Подробнее о добавлении и обновлении значений карты в официальных документах