boto3 DynamoDB - Операция запроса: ExpressionAttributeNames содержит неверный ключ - PullRequest
1 голос
/ 23 октября 2019

У меня есть следующий исходный код для фильтрации элементов из DynamoDB.

    ...
    session = boto3.session.Session()
    db = session.resource('dynamodb', region_name=region, endpoint_url=endpoint)
    self.table_obj = db.Table(table_name)

    filter_expression = ':status_name <> :status_val'
    attr_names = {'status_name': 'status'}
    attr_values = {'status_val': 'UPDATED'} 

    response = table.query(FilterExpression=filter_expression,
                           ExpressionAttributeNames=attr_names,
                           ExpressionAttributeValues=attr_values)

Однако я получаю следующую ошибку:

ClientError: An error occurred (ValidationException) when calling the Query operation: ExpressionAttributeNames contains invalid key: Syntax error; key: "status_name"

Я не вижу ничего плохого в приведенном выше коде, я что-то упустил?

1 Ответ

1 голос
/ 23 октября 2019

Согласно документации Имя атрибута выражения

Имя атрибута выражения - это заполнитель, который вы используете в выражении Amazon DynamoDB в качестве альтернативы фактическому имени атрибута. Имя атрибута выражения должно начинаться со знака решетки (#) и сопровождаться одним или несколькими буквенно-цифровыми символами.

Я думаю, что вам не хватает фунта (#) в именах атрибутов-заполнителей,

Попробуйте изменить это

attr_names = {'status_name': 'status'}

на

attr_names = {'#status_name': 'status'}
...