элемент условного обновления Dynamodb (клиент)
Я имею в виду этот образец обновления: https://stackoverflow.com/a/62030403/13967222.
for key, val in body.items():
update_expression.append(f" {key} = :{key},")
update_values[f":{key}"] = val
return "".join(update_expression)[:-1], update_values
Я пытаюсь добиться того же, но с помощью клиента Dynamodb.
Есть ли способ добавить проверку, доступно ли значение с помощью клиента Dynamodb?
Ответы
Вы можете проверить, существует ли уже ключевой атрибут, передавая ConditionExpression
параметр в таком запросе (на основе ответа в ответе, на который вы ссылаетесь):
table.update_item(
Key={'uuid':str(uuid)},
UpdateExpression=a,
ExpressionAttributeValues=dict(v),
ConditionExpression="attribute_not_exists(uuid)"
)
Ваша запись будет выполнена только при ConditionExpression
возврате True
. attribute_not_exists
- это функция DynamoDb, которая возвращается, True
когда указанный атрибут не существует. Также есть attribute_exists
функция для достижения противоположного результата. Подробнее о функциях условия DDB в официальной документации
Кроме того, вы можете проверить пример условной записи Python в документации здесь