在DynamoDB中将带有保留字的ProjectionExpression与Boto3结合使用

Kir*_*rst 2 python amazon-dynamodb boto3

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

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

工作正常。现在,我也想检索一个属性(不幸的是)使用保留字命名-假设CONNECTION

response = table.scan(ProjectionExpression='Id,Name,Connection')['Items']
Run Code Online (Sandbox Code Playgroud)

我收到类似的错误

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

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

Kir*_*rst 8

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

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

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