在 DynamoDB 中使用带有保留字的 ProjectionExpression 和 Boto3
·
问题:在 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']
更多推荐

所有评论(0)