Ошибка недопустимого выражения UpdateExpression при использовании Python для обновления поля DynamoDB - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над настройкой функции Python в AWS Lambda для обновления простой таблицы счетчиков в DynamoDB. Каждый раз при запуске функции счетчик должен обновляться на 1. Я надеюсь использовать функцию счетчика Atomi c, но в настоящее время получаю следующую ошибку: Invalid UpdateExpression: неправильный тип операнда для оператора или функция; оператор или функция: +, тип операнда: M "

Моя таблица DynamoDB имеет только два поля: SiteURL (ключ раздела) и Site (число, которое я хочу увеличивать с каждым обновлением)

Вот код - есть идеи, что мне не хватает?

import decimal
import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('resumecounter')

response = table.update_item(
    Key = {'SiteURL': 'https://website.com', 'Site': 'N'},
    ExpressionAttributeNames = {'#Site': 'Site'},
    ExpressionAttributeValues = {':increase': {'N': '1'},},
    UpdateExpression = "set site = site + :increase",
    ReturnValues="UPDATED_NEW"
)
print("UPDATING ITEM")
print(response)

1 Ответ

1 голос
/ 13 июля 2020

Я исправил несколько вещей, ваши значения ключа поиска и атрибутов. Я протестировал его на своем env, и он должен работать.

import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('resumecounter')

response = table.update_item(
    Key={'SiteURL': 'https://website.com'},
    ExpressionAttributeValues={':increase': 1},
    UpdateExpression="set site = site + :increase",
    ReturnValues="UPDATED_NEW"
)
print("UPDATING ITEM")
print(response)
...