In AWS gibt es die folgenden DynamoDB-Tabellen.
--Tabellenname: client_id_master
client-id
(str)
--Attribut:device-time-stamp
(int)Dieses Mal habe ich den folgenden Code erstellt, um den Wert der Spalte "Gerätezeitstempel" der Daten in dieser Tabelle von Python (boto3) mit der Methode "update_item ()" zu aktualisieren.
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)
Als ich diesen Code ausführte, wurde jedoch der folgende Fehler angezeigt:
An error occurred (ValidationException) when calling the UpdateItem operation: ExpressionAttributeNames contains invalid key: Syntax error; key: \"#device-time-stamp\""
Die Ursache ist, dass es Einschränkungen für die Zeichen gibt, die in dem durch UpdateExpression
von update_item ()
angegebenen Variablennamen verwendet werden können, und diese in # device-time-stamp
enthaltene Zeit -
entspricht dem unbrauchbaren Zeichen. Es ist ein Syntaxfehler aufgetreten.
Daher kann der Code normal ausgeführt werden, indem der Variablenname wie unten gezeigt auf "# device_time_stamp" gesetzt wird.
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)
das ist alles