我正在尝试使用 boto3 在 AWS Athena 中运行查询。但我收到此错误:
Operation cannot be paginated: get_query_results
这是我的代码:
client = boto3.client(
'athena',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
region_name='us-east-1'
)
query = """
select 1;
"""
response = client.start_query_execution(
QueryString=query,
# QueryExecutionContext={
# 'Database': 'Test45'
# },
ResultConfiguration={
'OutputLocation': 's3://dft-dwh-files/raw_data/google_analytics/dev-test/'
}
)
paginator = client.get_paginator('get_query_results')
response_iterator = paginator.paginate(
QueryExecutionId='string',
PaginationConfig={
'MaxItems': 123,
'PageSize': 123,
'StartingToken': 'bafe7afc-07b5-4622-9019-2e3c92853913'
}
)
我该如何解决这个问题?
请您参考如下方法:
我将解决方案发布在这里,以防其他人像我一样遇到这个问题...您必须从 response 发送 QueryExecutionId。
query_id = response['QueryExecutionId']
response_iterator = paginator.paginate(
QueryExecutionId=query_id,
PaginationConfig={
'MaxItems': 123,
'PageSize': 123,
'StartingToken': None
}
)
即便如此,如果您的查询需要一段时间,您将需要先实现一个等待函数,然后在知道查询成功后进行分页。我建议检查 get_query_execution 函数中的 State 值。
