首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >其中DynamoDB属性名称包含点的FilterExpression Boto3查询

其中DynamoDB属性名称包含点的FilterExpression Boto3查询
EN

Stack Overflow用户
提问于 2020-08-06 02:55:22
回答 1查看 4.3K关注 0票数 1

我正在尝试使用FilterExpression使用boto3查询来查询dynamodb表,但没有返回任何结果,因为我希望筛选的属性名称包含‘’。在里面。ExpressionAttributeNames似乎不能与boto3.dynamodb.conditions.Attr一起工作,而且我在网上找不到任何类似场景的示例python代码。

代码语言:javascript
复制
kwargs = {'IndexName': constants.RESOURCE_TYPE_INDEX, 'KeyConditionExpression': Key(constants.RESOURCE_TYPE).eq(constants.AUTOSCALING_GROUP),
          'FilterExpression': Attr('configuration.loadBalancerNames').contains(filter_value),
          'ProjectionExpression': 'relationships, PRIMARY_KEY'}
print("Getting associations for: " + constants.AUTOSCALING_GROUP)
retry = True
while retry:
    retry = False
    try:
        response = table.query(**kwargs)
    except ClientError as e:
        if e.response['Error']['Code'] == 'ProvisionedThroughputExceededException':
            time.sleep(5)
            retry = True
            print("Retrying query")
        else:
            exception_type = str(e.__class__.__name__)
            logger.error(
                "Function: utilities.get_asg_records_for_lb_enrichment " + "Exception Type: " + exception_type + " Exception Message:" + str(e))
    except Exception as e:
        exception_type = str(e.__class__.__name__)
        logger.error(
            "Function: utilities.get_asg_records_for_lb_enrichment " + "Exception Type: " + exception_type + " Exception Message:" + str(e))

    if response:
        associations.extend(response.get('Items'))
        if response.get('LastEvaluatedKey'):
            kwargs['ExclusiveStartKey'] = response.get('LastEvaluatedKey')
            retry = True
            print("Last evaluated key found: " + str(response.get('LastEvaluatedKey')))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 05:15:45

我猜.在DynamoDB中被认为是一个特殊字符,所以请使用Expression Attribute Name

所以你的kwargs应该是这样的,

代码语言:javascript
复制
kwargs = {
    'IndexName': constants.RESOURCE_TYPE_INDEX,
    'KeyConditionExpression': Key(constants.RESOURCE_TYPE).eq(constants.AUTOSCALING_GROUP),
    'FilterExpression': 'contains(#cl, :val)',
    'ExpressionAttributeNames': {
        '#cl': 'configuration.loadBalancerNames'
    },
    'ExpressionAttributeValues': {
        ':val': filter_value
    },
    'ProjectionExpression': 'relationships, PRIMARY_KEY'
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63271808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档