我正在尝试对DynamoDB进行查询,并且如果返回LastEvaluatedKey(表示查询超过1 MB),我想进行其他查询,以便使用LastEvaluatedKey从表中获取所有必需的数据。 ExclusiveStartKey用于下一个查询。
这是我现在拥有的代码:

query_response = table.query(
    KeyConditionExpression=Key('brand').eq(brand)
)

pagination_key = None

if 'LastEvaluatedKey' in query_response:
    pagination_key = query_response['LastEvaluatedKey']

    while pagination_key:
        next_query_response = table.query(
            KeyConditionExpression=Key('brand').eq(brand),
            ExclusiveStartKey=pagination_key
        )


但是,我想通过将查询提取到方法中并将其pagination_key作为参数传递来重新获得此代码。为此,我必须能够在第一次调用时将ExclusiveStartKey设置为FalseNone或其他一些默认值,但是我没有找到任何东西,或者我必须能够一起排除ExclusiveStartKey,但是我也不知道该怎么做。

最佳答案

我找到了一种构建参数的简单方法:


query_params = { 'KeyConditionExpression': Key('brand').eq(brand) }

if pagination_key:
    query_params['ExclusiveStartKey'] = pagination_key

query_response = table.query(query_params)

07-26 00:18