web-dev-qa-db-fra.com

Mettre à jour l'attribut "timestamp" mot réservé

J'ai besoin de mettre à jour l'attribut d'horodatage dans ma table dynamodb à l'aide de boto3 mais le nom d'attribut "horodatage" est un mot réservé, ce qui génère une erreur sur la commande SET.

table.update_item(
    Key={
        'id': item_id
    },
    UpdateExpression='SET timestamp = :val1', # this is the line giving the problem
    ExpressionAttributeValues={
        ":val1": new_timestamp
    }
)

"errorMessage": "Une erreur s'est produite (ValidationException) lors de l'appel de l'opération UpdateItem: UpdateExpression non valide: le nom de l'attribut est un mot clé réservé; mot clé réservé: horodatage",

24
KoalaStorm

Vous pouvez contourner ce problème en utilisant noms d'attribut d'expression (similaire aux ExpressionAttributeValues ​​que vous utilisez déjà).

table.update_item(
  Key={
    'id': item_id
  },
  UpdateExpression='SET #ts = :val1',
  ExpressionAttributeValues={
    ":val1": new_timestamp
  },
  ExpressionAttributeNames={
    "#ts": "timestamp"
  }
)

Lisez tout à ce sujet ici: https://docs.aws.Amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html

67
Mike Dinescu