elemento de actualización condicional de dynamodb (cliente)

Dec 09 2020

Me refiero a esta muestra de elemento de actualización: 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

Estoy tratando de lograr lo mismo pero usando el cliente dynamodb.

¿Hay alguna forma de verificar si el valor está disponible usando el cliente dynamodb?

Respuestas

1 FireNero Dec 09 2020 at 17:58

Puede verificar si el atributo clave ya existe pasando el ConditionExpressionparámetro en la solicitud de esa manera (según la respuesta en la respuesta a la que se refiere):

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

Su escritura se ejecutará solo cuando ConditionExpressionregrese True. attribute_not_existses una función de DynamoDb que regresa Truecuando el atributo especificado no existe. También hay una attribute_existsfunción para lograr el resultado opuesto. Más sobre las funciones de condición de DDB en la documentación oficial

Además, puede consultar el ejemplo de Python de escrituras condicionales en documentos aquí