2015-12-24 2 views
9

Suite à the documentation, j'essaye de créer une instruction de mise à jour qui mettra à jour ou ajoutera s'il n'existe pas un seul attribut dans une table dynamodb.Exemple de update_item dans dynamodb boto3

J'essaie cette

response = table.update_item(
    Key={'ReleaseNumber': '1.0.179'}, 
    UpdateExpression='SET', 
    ConditionExpression='Attr(\'ReleaseNumber\').eq(\'1.0.179\')', 
    ExpressionAttributeNames={'attr1': 'val1'}, 
    ExpressionAttributeValues={'val1': 'false'} 
) 

L'erreur que je reçois est:

botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the UpdateItem operation: ExpressionAttributeNames contains invalid key: Syntax error; key: "attr1"

Si quelqu'un a fait quelque chose de semblable à ce que je suis en train de réaliser s'il vous plaît partager exemple .

Répondre

13

Trouvé exemple de travail here, très important de lister comme les clés tous les index de la table, cela nécessitera une requête supplémentaire avant la mise à jour, mais cela fonctionne.

response = table.update_item(
    Key={ 
     'ReleaseNumber': releaseNumber, 
     'Timestamp': result[0]['Timestamp'] 
    }, 
    UpdateExpression="set Sanity = :r", 
    ExpressionAttributeValues={ 
     ':r': 'false', 
    }, 
    ReturnValues="UPDATED_NEW" 
) 
+0

Il convient de noter que votre erreur initiale faisait référence à ExpressionAttributeNames qui a été exclu de l'échantillon fourni dans cette réponse .... alors que vous ne devez inclure toutes les valeurs de la clé pour mettre à jour un élément de cette n'était pas directement l'erreur que vous aviez à l'origine. – James