我有以下源代码来过滤 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"
我看不出上面的代码有什么问题,我是否遗漏了什么?
最佳答案
根据 Expression Attribute Name documentation
An expression attribute name is a placeholder that you use in an Amazon DynamoDB expression as an alternative to an actual attribute name. An expression attribute name must begin with a pound sign (#), and be followed by one or more alphanumeric characters.
我认为您缺少占位符属性名称中的井号 (#)。
尝试改变这一点
attr_names = {'status_name': 'status'}
至
attr_names = {'#status_name': 'status'}
关于python - boto3 DynamoDB - 查询操作 : ExpressionAttributeNames contains invalid key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58530370/