【问题标题】:AWS DynamoDB query fails when attribute have certain characters当属性具有某些字符时,AWS DynamoDB 查询失败
【发布时间】:2018-03-22 09:34:01
【问题描述】:

如果我运行这个查询:

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 使其工作?

附:它也不适用于下划线。

【问题讨论】:

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


    【解决方案1】:

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

    [...]

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

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

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

    【讨论】:

      【解决方案2】:

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

      如果您正在寻找任何与您的查询匹配的记录,那么您需要扫描而不是查询。

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

      ValidationException 消息:因具体情况而异 遇到错误

      出现此错误的原因有多种,例如必需的参数 丢失、超出范围的值或不匹配的数据类型。 错误消息包含有关特定部分的详细信息 导致错误的请求。

      可以重试吗?没有

      希望对你有帮助。

      【讨论】:

      • 这有点像你在猜测,在这里...Syntax error; token: "humidity", near: "Absolute humidity [" 似乎排除了你所暗示的问题。
      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多