【问题标题】:Invalid UpdateExpression Error when using Python to update a DynamoDB field使用 Python 更新 DynamoDB 字段时出现无效的 UpdateExpression 错误
【发布时间】:2020-11-02 03:16:40
【问题描述】:

我正在努力在 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)

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 2015-10-28
      相关资源
      最近更新 更多