élément de mise à jour conditionnelle dynamodb (client)

Dec 09 2020

Je fais référence à cet exemple d'élément de mise à jour: 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

J'essaye de réaliser la même chose mais en utilisant le client dynamodb.

Y a-t-il moyen d'ajouter un contrôle si la valeur est disponible à l'aide du client dynamodb?

Réponses

1 FireNero Dec 09 2020 at 17:58

Vous pouvez vérifier si l'attribut clé existe déjà en passant le ConditionExpressionparamètre dans la demande comme ça (en fonction de la réponse dans la réponse à laquelle vous faites référence):

table.update_item(
        Key={'uuid':str(uuid)},
        UpdateExpression=a,
        ExpressionAttributeValues=dict(v),
        ConditionExpression="attribute_not_exists(uuid)"
        )

Votre écriture ne sera exécutée que lors des ConditionExpressionretours True. attribute_not_existsest une fonction DynamoDb qui renvoie Truelorsque l'attribut spécifié n'existe pas. Il existe également une attribute_existsfonction pour obtenir le résultat inverse. En savoir plus sur les fonctions de condition DDB dans la documentation officielle

Vous pouvez également consulter l'exemple Python d'écritures conditionnelles dans la documentation ici