我正在尝试使用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'
}
)
我该如何解决这个问题?
答案 0 :(得分:6)
我在这里发布解决方案以防其他人像我一样遇到这个问题......你必须从response
发送QueryExecutionId。
query_id = response['QueryExecutionId']
response_iterator = paginator.paginate(
QueryExecutionId=query_id,
PaginationConfig={
'MaxItems': 123,
'PageSize': 123,
'StartingToken': None
}
)
即便如此,如果您的查询需要一段时间,您需要首先实现一个服务器函数,然后在知道查询成功后再执行分页。我建议您检查State
功能中的get_query_execution
值。