element aktualizacji warunkowej dynamodb (klient)
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
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