item de atualização condicional dynamodb (cliente)

Dec 09 2020

Refiro-me a este exemplo de item de atualização: 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

Estou tentando conseguir o mesmo, mas usando o cliente dynamodb.

Existe alguma maneira de eu adicionar verificar se o valor está disponível usando o cliente dynamodb?

Respostas

1 FireNero Dec 09 2020 at 17:58

Você pode verificar se o atributo key já existe, passando o ConditionExpressionparâmetro na solicitação como essa (com base na resposta da resposta a que você está se referindo):

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

Sua gravação será executada somente quando ConditionExpressionretornar True. attribute_not_existsé uma função DynamoDb que retorna Truequando o atributo especificado não existe. Também existe uma attribute_existsfunção para obter o resultado oposto. Mais sobre funções de condição DDB na documentação oficial

Além disso, você pode verificar o exemplo Python de gravações condicionais na documentação aqui