Como insiro condicionalmente um item em uma tabela dynamodb usando boto3
Se eu tiver uma tabela com uma chave de hash de userId e uma chave de intervalo de productId, como coloco um item nessa tabela apenas se ele ainda não existir usando as ligações dynamodb do boto3?
A chamada normal para put_item se parece com isso
table.put_item(Item={'userId': 1, 'productId': 2})
Minha chamada com uma ConditionExpression é assim:
table.put_item(
Item={'userId': 1, 'productId': 2},
ConditionExpression='userId <> :uid AND productId <> :pid',
ExpressionAttributeValues={':uid': 1, ':pid': 3}
)
Mas isso gera uma ConditionalCheckFailedException toda vez. Se um item existe com o mesmo productId ou não.