Использование ProjectionExpression с зарезервированными словами с Boto3 в DynamoDB - PullRequest
0 голосов
/ 25 октября 2018

Я выбираю данные из базы данных DynamoDB, используя boto3

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: имя атрибута является зарезервированным ключевым словом;зарезервированное ключевое слово: соединение

Я знаю, что существует метод наложения имен при использовании фильтров или запросов, но существует ли он для простых проекций из boto3?

1 Ответ

0 голосов
/ 25 октября 2018

Оказывается, что это легко решается так же, как при непосредственном вызове API-интерфейса DynamoDB.

Мы должны использовать псевдоним для любого зарезервированного слова, а затем предоставить отображение из псевдонима обратно в «true».имя с параметром / свойством ExpressionAttributeName .

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