élément de mise à jour conditionnelle dynamodb (client)
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
Vous pouvez vérifier si l'attribut clé existe déjà en passant le ConditionExpression
paramè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 ConditionExpression
retours True
. attribute_not_exists
est une fonction DynamoDb qui renvoie True
lorsque l'attribut spécifié n'existe pas. Il existe également une attribute_exists
fonction 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