Dynamodb-bedingtes Aktualisierungselement (Client)

Dec 09 2020

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

1 FireNero Dec 09 2020 at 17:58

Sie können überprüfen, ob das Schlüsselattribut bereits vorhanden ist, indem Sie den ConditionExpressionParameter 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 ConditionExpressionzurückkehren True. attribute_not_existsist eine DynamoDb-Funktion, die zurückgegeben wird, Truewenn das angegebene Attribut nicht vorhanden ist. Es gibt auch eine attribute_existsFunktion, 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