¿Cómo inserto condicionalmente un elemento en una tabla dynamodb usando boto3?
Si tengo una tabla con una clave hash de userId y una clave de rango de productId, ¿cómo pongo un elemento en esa tabla solo si aún no existe usando los enlaces dynamodb de boto3?
La llamada normal a put_item se ve así
table.put_item(Item={'userId': 1, 'productId': 2})
Mi llamada con una ConditionExpression se ve así:
table.put_item(
Item={'userId': 1, 'productId': 2},
ConditionExpression='userId <> :uid AND productId <> :pid',
ExpressionAttributeValues={':uid': 1, ':pid': 3}
)
Pero esto genera una ConditionalCheckFailedException cada vez. Si existe un artículo con el mismo ID de producto o no.