2017-12-21 14 views
1

BOTO3 pythonを使用してAthenaテーブルのテーブル名のリストを取得しようとしています。Boto3 Athenaがすべてのテーブルを表示していない

これは私のコードです。私はpaginatorをする試みが正しいとは思わない。任意のヘルプが評価されます

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 page_index, page in enumerate(page_iterator):

関連する問題