使用Python更新DynamoDB字段时出现无效的UpdateExpression错误

时间:2020-07-12 22:44:44

标签: python amazon-web-services amazon-dynamodb

我正在努力在AWS Lambda中设置Python函数来更新DynamoDB中的简单计数器表。每次运行该函数时,它都应将计数器更新为1。我希望使用“原子计数器”功能,但是我目前不断遇到以下错误: 无效的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 个答案:

答案 0 :(得分:1)

我修复了一些问题,包括搜索键和属性值。我已经在我的环境中对其进行了测试,这应该可以工作。

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)