Dynamodb-bedingtes Aktualisierungselement (Client)
Ich beziehe mich auf dieses Beispiel eines Aktualisierungselements: 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
Ich versuche das gleiche zu erreichen, benutze aber den Dynamodb-Client.
Gibt es eine Möglichkeit, eine Überprüfung hinzuzufügen, ob der Wert mit dem Dynamodb-Client verfügbar ist?
Antworten
Sie können überprüfen, ob das Schlüsselattribut bereits vorhanden ist, indem Sie den ConditionExpression
Parameter in der Anforderung wie folgt übergeben (basierend auf der Antwort in der Antwort, auf die Sie sich beziehen):
table.update_item(
Key={'uuid':str(uuid)},
UpdateExpression=a,
ExpressionAttributeValues=dict(v),
ConditionExpression="attribute_not_exists(uuid)"
)
Ihr Schreibvorgang wird nur ausgeführt, wenn Sie ConditionExpression
zurückkehren True
. attribute_not_exists
ist eine DynamoDb-Funktion, die zurückgegeben wird, True
wenn das angegebene Attribut nicht vorhanden ist. Es gibt auch eine attribute_exists
Funktion, um das gegenteilige Ergebnis zu erzielen. Weitere Informationen zu DDB-Bedingungsfunktionen finden Sie in der offiziellen Dokumentation
Sie können hier auch das Python-Beispiel für bedingte Schreibvorgänge in Dokumenten überprüfen