item de atualização condicional dynamodb (cliente)
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
Você pode verificar se o atributo key já existe, passando o ConditionExpression
parâ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 ConditionExpression
retornar True
. attribute_not_exists
é uma função DynamoDb que retorna True
quando o atributo especificado não existe. Também existe uma attribute_exists
funçã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