当前位置: 首页 > 知识库问答 >
问题:

在DynamoDB中使用带有保留字的ProjectionExpression和Boto3

宰父衡
2023-03-14

我正在使用boto3从DynamoDB数据库中选择数据

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(table_name)
response = table.scan(ProjectionExpression='Id,Name')['Items']

工作罚款。现在我还想检索一个(不幸的是)用保留字命名的属性——比方说CONNECTION

response = table.scan(ProjectionExpression='Id,Name,Connection')['Items']

我得到一个错误就像

调用扫描操作时发生错误(ValidationException):无效的ProjectionExpression:属性名称是保留关键字;保留关键字:连接

我知道如果使用过滤器或查询,会有一种别名技术,但对于boto3的简单投影是否存在这种技术?

共有1个答案

马德宇
2023-03-14

事实证明,这很容易解决,就像直接调用DynamoDB API一样。

我们应该为任何保留字使用别名,然后使用ExpressionAttributeName参数/属性提供从别名到“true”名称的映射。

response = table.scan(ProjectionExpression = 'Id, Name, #c',
                      ExpressionAttributeNames = {'#c': 'Connection'})['Items']
 类似资料:
  • 问题内容: 这是一些简单的代码,但我只是不知道为什么我不能使用这个词作为表的实体 我意识到如果我使用key,我将无法使用“ key”,mysql将要求我检查语法,但是如果我使用“ id”或任何其他表,将会创建该表。 有人知道如何将实体名称创建为密钥吗?这并不重要,因为我只能使用id而不是key,但是由于我发现了此错误,所以我不知道是否有办法使它起作用。 问题答案: 您仍然可以使用。只要用反引号包起

  • 如果你默认使用Markdown编辑器编辑文档,但是文字中存在一些 Markdown 的保留字。 例如: 表中中出现 | 需要输入 ` 需要成对的出现 [ ] >和<也是需要转义后才能显示。 等等,一些特殊需求。可以通过unicode编码来解决。 将要输入的字符进行转义,之后使用转义字符即可。 常见转义字符: 原字符 转义字符 | | ` ` ] ] [ [ > &gt; < &lt; @ @ #

  • 问题内容: 我有一个名为“ Group”的实体类,NetBeans警告我“实体表名称是保留的Java Persistence QL关键字”。 类似的情况是使用保留的SQL关键字。 这个名字会被转义吗?使用其他表名可以解决@Table(name =“ otherName”)的问题。还是应该重命名课程? 问题答案: 这个名字会被转义吗? 有 没有 在JPA规范是这么说的,如果您的提供商做,这是供应商特

  • 我有一个名为“timestamp”列的DynamoDB表,正在尝试按日期查询。我无法控制更改列名。 我得到的错误: 错误:ValidationException:无效的KeyConditionExpression:属性名称是保留关键字;保留关键字:时间戳 除了重命名“timestamp”列之外,还有其他解决方法吗?

  • 我读过,在呈现UI的片段上设置可能会导致内存泄漏。 有人能解释一下为什么会发生这种情况吗?我在任何地方都没有找到详细的解释。

  • 问题内容: 在hibernate状态下使用sqlserver方言。 我希望hibernate在创建表时使用带引号的标识符。 除了重命名字段外,还有其他任何处理方法的想法吗? 问题答案: 遇到相同的问题,但表名为。如果你设定 然后所有数据库标识符将被引用。 在这里找到我的答案 表名称中的特殊字符hibernate给出错误 并在这里找到所有可用的设置 https://docs.jboss.org/hi