我正在尝试对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
设置为False
,None
或其他一些默认值,但是我没有找到任何东西,或者我必须能够一起排除ExclusiveStartKey
,但是我也不知道该怎么做。 最佳答案
我找到了一种构建参数的简单方法:
query_params = { 'KeyConditionExpression': Key('brand').eq(brand) }
if pagination_key:
query_params['ExclusiveStartKey'] = pagination_key
query_response = table.query(query_params)