es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Condición de DynamoDB sin usar ExpressionAttributeValues

Necesito hacer una comparación en ConditionExpression de la forma ‘(#i.body_uncommon = 1)’ sin usar ExpressionAttributeValues, ¿cuál debería ser la sintaxis? Busqué en toda la documentación y no encontré un ejemplo.
Por ejemplo:

response = table.update_item(
Key={
'ID': "jr_test"
}
, ConditionExpression='(#i.body_uncommon = 1)'
, UpdateExpression=final_str
, ExpressionAttributeNames={
"#i": "items"
}
)

Pero este código arroja un error de sintaxis en el lugar: token: “1”, cerca de: “= 1)”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para comparar una ConditionExpression de la forma “(#i.body_uncommon = 1)” sin usar ExpressionAttributeValues, se debe usar la siguiente sintaxis:

    response = table.update_item(
        Key={
            'ID': 'jr_test'
        },
        ConditionExpression='#i.body_uncommon = :value',
        ExpressionAttributeNames={
            '#i': 'items'
        },
        ExpressionAttributeValues={
            ':value': {'N': '1'}
        },
        UpdateExpression=final_str
    )
    

    En este código, usamos el marcador de posición “:value” y especificamos el valor para él en ExpressionAttributeValues. Al proporcionar el tipo de dato “N” para el valor, permitimos que DynamoDB sepa que es un número.

    De esta manera, podemos comparar el valor de “#i.body_uncommon” con 1 sin usar ExpressionAttributeValues directamente en la ConditionExpression.

Comments are closed.