【问题标题】:Using a ProjectionExpression with reserved words with Boto3 in DynamoDB在 DynamoDB 中使用带有保留字的 ProjectionExpression 和 Boto3
【发布时间】:2019-03-30 09:26:40
【问题描述】:

我正在使用 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']

我收到类似

的错误

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

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

【问题讨论】:

    标签: python amazon-dynamodb boto3


    【解决方案1】:

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

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

    response = table.scan(ProjectionExpression = 'Id, Name, #c',
                          ExpressionAttributeNames = {'#c': 'Connection'})['Items']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      相关资源
      最近更新 更多