ExpressionAttributeValues

ExpressionAttributeValues

我已经阅读了官方的AWS文档和几个论坛,但是当使用Python/Boto3和Dynamodb将项目添加到string_set时,仍然找不到我做错的事情。这是我的代码:

table.update_item(
                Key={
                    ATT_USER_USERID: event[ATT_USER_USERID]
                },
                UpdateExpression="add " + key + " :val0" ,
                ExpressionAttributeValues = {":val0" : set(["example_item"]) },
            )

我得到的错误是:

最佳答案

您似乎为自己找到了一种方法,但是对于其他来这里寻找答案的人来说:

  • 您的“键”语法需要一种数据类型(例如“S”或“N”)
  • 您需要使用“SS”作为ExpressionAttributeValues
  • 中的数据类型
  • 您不需要在ExpressionAttributeValues中“设置”。

  • 这是我刚刚运行的一个示例(我有一个现有集test_set,具有4个现有值,并添加了第5个字符串“五”):
    import boto3
    db = boto3.client("dynamodb")
    db.update_item(TableName=TABLE,
                   Key={'id':{'S':'test_id'}},
                   UpdateExpression="ADD test_set :element",
                   ExpressionAttributeValues={":element":{"SS":['five']}})
    

    因此,在此之前,字符串集看起来像['one','two','three','four'],在之后,它看起来像['one','two','three','four','five']

    10-08 14:48