element aktualizacji warunkowej dynamodb (klient)

Dec 09 2020

Mam na myśli tę próbkę aktualizacji: 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

Próbuję osiągnąć to samo, ale używając klienta dynamodb.

Czy istnieje sposób, aby dodać sprawdzenie, czy wartość jest dostępna za pomocą klienta dynamodb?

Odpowiedzi

1 FireNero Dec 09 2020 at 17:58

Możesz sprawdzić, czy atrybut klucza już istnieje, przekazując ConditionExpressionparametr w takim żądaniu (na podstawie odpowiedzi w odpowiedzi, do której się odnosisz):

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

Twój zapis zostanie wykonany tylko wtedy, gdy ConditionExpressionpowróci True. attribute_not_existsjest funkcją DynamoDb, która zwraca, Truegdy określony atrybut nie istnieje. Istnieje również attribute_existsfunkcja umożliwiająca osiągnięcie odwrotnego wyniku. Więcej o funkcjach warunków DDB w oficjalnej dokumentacji

Możesz również sprawdzić przykład Pythona z zapisami warunkowymi w dokumentach tutaj