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 ConditionExpression
parametr 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 ConditionExpression
powróci True
. attribute_not_exists
jest funkcją DynamoDb, która zwraca, True
gdy określony atrybut nie istnieje. Istnieje również attribute_exists
funkcja 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