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

我正在使用 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):Invalid ProjectionExpression: Attribute name is a reserved keyword;保留关键字:连接

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

解答

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

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

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

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐