Skip to main content
 首页 » 编程设计

python之AWS Athena之操作无法分页 : get_query_results

2025年05月04日13shanyou

我正在尝试使用 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 值。