элемент условного обновления 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?


person test    schedule 09.12.2020    source источник


Ответы (1)


Вы можете проверить, существует ли уже ключевой атрибут, передав параметр 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 в документы здесь

person FireNero    schedule 09.12.2020