AWS DynamoDB使用Python/Boto3/Lamba更新整数计数器

2024-09-30 20:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有整数值的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"
  ]
}

Tags: lambdainpyupdatefunction整数boto3item
2条回答

请参阅更新的语法:

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

请仔细阅读文档here

您使用的是混合的Javascript和Python语法。应纠正如下:

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

相关问题 更多 >