python - 更新 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"
)
解决方案
这是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”。
推荐阅读
- c# - 如何检查参数是否具有某些属性值?
- python - 用python解析markdown文件
- ios - 如果我选择低于 11.0.0 的 IOS 部署目标,则构建失败
- flutter - 如何将文本字段控制器传递到按钮选择器颤动小部件
- python - 如何从所有页面获取数据?
- javascript - Javascript变量替换(CK编辑器)
- java - 下载图像,但在 kotlin 中图像的大小不正确
- python - 如何使用 Python 显示来自 Oracle 数据库的 2 字节字母?
- node.js - 在 ES5 中扩展 Node 的 EventEmitter
- kubernetes - 如何将相同的卷挂载到 kubernetes 命名空间中的所有 pod