首页 > 解决方案 > 更新 dynamodb 映射中的键值,其中键有空格

问题描述

我正在尝试更新 dynamodb 表中映射对象内的键/值对,但由于空格而无法在 UpdateExpression 中使用键。我要更新的值在这个映射中的几个键中,以便编写更新表达式。我正在尝试使用语法 mainkey.subkey.targetkey 来识别我要更新的密钥。

但是,如果目标键有空格,这会导致语法问题。例如,像“US 12”这样的键在以这种方式实现时会导致问题(mainkey.subkey.US 12)。

以下是可以为问题提供上下文的代码片段:

table_obj.update_item(
                Key=key,
                UpdateExpression='SET attributes.page2.extraction.US 12 = :newItem',
                ExpressionAttributeValues={
                    ":newItem": values
                },
                ReturnValues="UPDATED_NEW"
            )

标签: pythonamazon-dynamodbboto3

解决方案


这是ExpressionAttributeNames为了什么。你可以这样做:

table_obj.update_item(
     Key=key,
     UpdateExpression='SET attributes.page2.extraction.#name = :newItem',
     ExpressionAttributeNames={'#name': 'US 12'},
     ExpressionAttributeValues={":newItem": values},
     ReturnValues="UPDATED_NEW"
)

请注意,别名#name仅适用于单个组件“US 12” - 您不能尝试将整个路径命名为“attributes.page2.extraction.US 12”。


推荐阅读