Lorsque j'essaye de mettre à jour les données sur DynamoDB avec Python (boto3), j'obtiens "ExpressionAttributeNames contient une clé invalide: Erreur de syntaxe; clé: <nom de clé>"

un événement

Il existe les tables DynamoDB suivantes sur AWS.

Cette fois, j'ai créé le code suivant pour mettre à jour la valeur de la colonne device-time-stamp des données de cette table depuis Python (boto3) par la méthode ʻupdate_item ()`.

from datetime import datetime
import boto3

dynamodb = boto3.resource('dynamodb')

now_unix_time = datetime.now().strftime('%s')
clientId = 'ef5b728f4a74aed'
option = {
    'Key': {'client-id': clientId},
    'UpdateExpression': 'set #device-time-stamp = :timeStamp',
    'ExpressionAttributeNames': {
        '#device-time-stamp': 'device-time-stamp'
    },
    'ExpressionAttributeValues': {
        ':timeStamp': now_unix_time
    }
}

table = dynamodb.Table('client_id_master')
table.update_item(**option)

Cependant, lorsque j'ai exécuté ce code, j'ai eu l'erreur suivante:

An error occurred (ValidationException) when calling the UpdateItem operation: ExpressionAttributeNames contains invalid key: Syntax error; key: \"#device-time-stamp\""

Cause / solution

La cause est qu'il y a des restrictions sur les caractères qui peuvent être utilisés dans le nom de variable spécifié par ʻUpdateExpressionde ʻupdate_item (), et cette fois - inclus dans # device-time-stamp correspond au caractère inutilisable. Une erreur de syntaxe s'est produite.

Par conséquent, en définissant le nom de la variable sur # device_time_stamp comme indiqué ci-dessous, le code peut être exécuté normalement.

from datetime import datetime
import boto3

dynamodb = boto3.resource('dynamodb')

now_unix_time = datetime.now().strftime('%s')
clientId = 'ef5b728f4a74aed'
option = {
    'Key': {'client-id': clientId},
    'UpdateExpression': 'set #device_time_stamp = :timeStamp',
    'ExpressionAttributeNames': {
        '#device_time_stamp': 'device-time-stamp'
    },
    'ExpressionAttributeValues': {
        ':timeStamp': now_unix_time
    }
}

table = dynamodb.Table('client_id_master')
table.update_item(**option)

image.png

c'est tout

Recommended Posts

Lorsque j'essaye de mettre à jour les données sur DynamoDB avec Python (boto3), j'obtiens "ExpressionAttributeNames contient une clé invalide: Erreur de syntaxe; clé: <nom de clé>"
Lorsque j'essaye d'importer des pandas sur macOS, j'obtiens l'erreur No module named'_bz2 '
J'obtiens une erreur lorsque j'essaie d'élever Python à la série 3 en utilisant pyenv dans Catalina
J'ai essayé d'obtenir des données CloudWatch avec Python
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
Quand j'essaye d'installer mysqlclient avec Django, j'obtiens l'erreur: la commande 'gcc' a échoué avec l'état de sortie 1.
Lorsque j'essaye de connecter django et postgresql avec Docker, j'obtiens l'erreur "django.db.utils.OperationalError: impossible de traduire le nom d'hôte" db "en adresse: Nom ou service inconnu"
J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
Lorsque j'essaye de me connecter à MySQL avec mysql-connector-python, je ne peux pas me connecter avec l'erreur "Erreur de connexion SSL: SSL_CTX_set_tmp_dh a échoué"
Essayez de déchiffrer les caractères déformés dans le nom du fichier joint avec Python
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Je souhaite améliorer l'efficacité avec Python même dans le système expérimental (4) Utilisez ser.close () lorsqu'une erreur est générée en utilisant la syntaxe try.
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
Quand j'obtiens une erreur avec Pylint sur Windows Atom
J'obtiens une erreur en essayant d'installer maec 4.0.1.0 avec pip
J'ai essayé de démarrer avec Bitcoin Systre le week-end
Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
Lorsque j'importe TensorFlow vers Python, j'obtiens "Erreur d'importation: échec du chargement de la DLL: le module spécifié est introuvable."
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'obtiens un UnicodeDecodeError en essayant de me connecter à oracle avec python sqlalchemy
J'obtiens une erreur Python No module nommée'encodings 'avec la commande aws
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Essayez de piquer la base de données sur IBM i avec python + JDBC à l'aide de JayDeBeApi
[Python] Récupère le nom de la variable avec str
Je suis un amateur le 14e jour de python, mais je veux essayer l'apprentissage automatique avec scicit-learn
python Je ne sais pas comment obtenir le nom de l'imprimante que j'utilise habituellement.
Erreur d'importation: impossible d'importer le nom 'Flask' lorsque le nom de fichier est flask.py dans Flask
Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
Lorsque j'essaye d'utiliser le notebook Jupiter sur Mac, je ne peux sélectionner que python2
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
J'ai essayé de sauvegarder les données avec discorde
Essayez de résoudre le diagramme homme-machine avec Python
Introduction à Python avec Atom (en route)
Erreur d'attribut: impossible d'obtenir l'attribut 'nom de classe' sur <module '__ main__' (intégré)> lors du chargement de pickle python
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
[CGI] Exécutez le programme Python du serveur avec Vue.js + axios et obtenez les données de sortie
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
[Introduction à Python] Quel est l'important "if __name__ == '__ main__':" lorsqu'il s'agit de modules?
Que faire si vous obtenez l'erreur ʻERR_FEATURE_UNAVAILABLE_ON_PLATFORM` lors de l'utilisation de ts-node-dev sous Linux
Comment obtenir le nom de la variable lui-même en python
Essayez de résoudre le livre des défis de programmation avec python3
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
J'ai essayé de toucher un fichier CSV avec Python