当属性具有特定字符时,AWS DynamoDB查询失败

时间:2018-03-21 09:32:14

标签: amazon-web-services amazon-dynamodb boto boto3

如果我运行此查询:

data = table.query(KeyConditionExpression = Key('id').eq('fasfas'),
                   FilterExpression=Attr(u'Absolute humidity[g/kg].3').eq(1))

我收到错误:

ClientError: An error occurred (ValidationException) when calling the Query operation: Invalid FilterExpression: Syntax error; token: "humidity", near: "Absolute humidity ["

但是,如果我使用他们的网站运行查询,它的工作原理。如何使用boto3使其工作?

P.S。它也不适用于下划线。

2 个答案:

答案 0 :(得分:2)

  

表达式属性名称是您在表达式中使用的占位符,作为实际属性名称的替代。

     

[...]

     

如果属性名称以数字开头或包含空格,特殊字符或保留字,则必须使用表达式属性名称替换表达式中该属性的名称。

     

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html

另见http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Client.query

答案 1 :(得分:0)

您的某个参数与数据类型不匹配或缺少必需参数,例如范围和散列键。

如果您要查找与查询匹配的任何记录,则需要扫描而不是查询。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html

  

ValidationException消息:根据具体情况而变化   遇到错误

     

由于多种原因(例如必需参数)可能会发生此错误   缺少的值,超出范围的值或不匹配的数据类型。   错误消息包含有关特定部分的详细信息   导致错误的请求。

     

可以重试吗?否

希望它有所帮助。