2017-12-21 44 views
1

모든 테이블을 표시하지 않습니다.Boto3 Athena가 BOTO3 python을 사용하여 Athena Table에서 테이블 이름 목록을 얻으려고 시도하는 중

이것은 내 코드입니다. 나는 페이징기에 대한 나의 시도가 정확하지 않다고 생각한다. 도움이 필요합니다

import boto3 

client = boto3.client('glue') 
responseGetDatabases = client.get_databases() 
databaseList = responseGetDatabases['DatabaseList'] 

for databaseDict in databaseList: 
    databaseName = databaseDict['Name'] 
    if "dbName_" in databaseName: 
     print '\ndatabaseName: ' + databaseName 
     responseGetTables = client.get_tables(DatabaseName = databaseName) 
     paginator = client.get_paginator(['TableList']) 
     for page in paginator: 
      tableList = responseGetTables['TableList'] 
      for tables in tableList: 
       print tables['Name'] 

답변

1

get_paginator 함수 매개 변수는 작업의 이름이어야합니다. 당신이 매기기 개체가 있으면

`paginator = client.get_paginator('get_tables')`. 

, 당신은 반복자를 검색 할 수 paginator.paginate를 호출해야합니다 : 그것은 당신이 그렇게

`paginator = client.get_paginator(['TableList'])` 

가 있어야 get_tables 기능에 페이지를 매기하려는 것 같습니다. 다음과 같이 데이터베이스 매개 변수를 보낼 수 있습니다.

`page_iterator = paginator.paginate(
    DatabaseName=databaseDict['Name'], 
    PaginationConfig={ 
     'MaxItems': 123, 
     'PageSize': 123, 
     'StartingToken': 'string' 
    } 
)` 

here에 대한 설명을 참조하십시오.

이제 반복자를 가지고, 당신은 그것을 열거하여 for 루프를 호출 할 수

for page_index, page in enumerate(page_iterator):