【问题标题】:AWS DynamoDB update integer counter with Python/Boto3/LambaAWS DynamoDB 使用 Python/Boto3/Lamba 更新整数计数器
【发布时间】:2021-02-21 11:53:15
【问题描述】:

我有一个带有整数值的 DynamoDB 表,需要使用 Python/Boto3/AWS-Lambda 环境递增。

userMetrics
{
  "userid": 1234567890,
  "likemetrics": 0,
  "lasttimestamp": 1604553995
}

我正在尝试使用原子增量方法dynamodb: how to increment a value in map 增加 likemetrics 整数计数器,但在测试期间失败。

   responseupd = dydb_usertable.update_item(
        Key = {
            'userid': 1234567890
        },
        ExpressionAttributeValues: { ":inc": {N: "1"} },
        UpdateExpression: "ADD likemetrics :inc"
        })

控制台抛出的错误是

{
  "errorMessage": "Syntax error in module 'lambda_function': unindent does not match any outer indentation level (lambda_function.py, line 34)",
  "errorType": "Runtime.UserCodeSyntaxError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\" Line 34\n           responseupd = dydb_usertable.update_item(\n"
  ]
}

【问题讨论】:

    标签: python aws-lambda amazon-dynamodb boto3


    【解决方案1】:

    请仔细查看文档here:

    您正在使用混合的 Javascript 和 Python 语法。应该更正如下:

    dydb_usertable.update_item(
        Key = {
            'userid': {
                'N': 1234567890
            }
        },
        ExpressionAttributeValues = { ":inc": {"N": "1"} },
        UpdateExpression = "ADD likemetrics :inc"
    })
    

    【讨论】:

    • 我得到失败响应,如 Response: { "errorMessage": "name 'N' is not defined", "errorType": "NameError", "stackTrace": [ " File \"/var/ task/lambda_function.py\",第 40 行,在 lambda_handler\n ExpressionAttributeValues = { \":inc\": {N: \"1\"} },\n" ] }
    • 更新了我的答案。在 N 周围添加了字符串引号。
    【解决方案2】:

    查看更新的语法:

    dydb_usertable.update_item(
            Key={
                'userid': 1234567890
            },
            UpdateExpression="ADD likemetrics :inc",
            ExpressionAttributeValues={
                ':inc': 1
            },
            ReturnValues="UPDATED_NEW"
        )
    

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 2012-05-07
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多