【问题标题】:Update attribute "timestamp" reserved word更新属性“时间戳”保留字
【发布时间】:2018-02-06 23:01:21
【问题描述】:

我需要使用 boto3 更新我的 dynamodb 表中的时间戳属性,但属性名称“timestamp”是保留字,因此它会在 SET 命令上引发错误。

table.update_item(
    Key={
        'id': item_id
    },
    UpdateExpression='SET timestamp = :val1', # this is the line giving the problem
    ExpressionAttributeValues={
        ":val1": new_timestamp
    }
)

"errorMessage": "调用UpdateItem操作时发生错误(ValidationException): Invalid UpdateExpression: 属性名是保留关键字;保留关键字:timestamp",

【问题讨论】:

    标签: amazon-dynamodb boto3


    【解决方案1】:

    您可以使用 expression attribute names 解决此问题(类似于您已经在使用的 ExpressionAttributeValues)。

    table.update_item(
      Key={
        'id': item_id
      },
      UpdateExpression='SET #ts = :val1',
      ExpressionAttributeValues={
        ":val1": new_timestamp
      },
      ExpressionAttributeNames={
        "#ts": "timestamp"
      }
    )
    

    在此处阅读所有相关信息:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html

    【讨论】:

    • 谢谢,工作就像一个魅力。没想到他们将这些视为保留。
    • 我们如何使用这种模式进行多次字段更新?
    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2013-11-19
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多