使用boto3获取数据库中的表列表

问题描述 投票:0回答:2

我正在尝试从我的 aws 数据目录中的数据库获取表的列表。 我正在尝试使用 boto3。 我在 aws 上的 sagemaker 笔记本中运行下面的代码。 它会永远运行(例如超过 30 分钟)并且不返回任何结果。 test_db 中只有 4 个表。 我的目标是运行类似的代码作为 awsglueetl 作业的一部分,我将在编辑后的 awsetl 作业脚本中运行该代码。 有谁知道问题可能是什么或建议如何做到这一点?

代码:

import boto3
from pprint import pprint

glue = boto3.client('glue', region_name='us-east-2')

response = glue.get_tables(
    DatabaseName=‘test_db’
)

print(pprint(response['TableList']))
python-3.x boto3 aws-glue aws-glue-data-catalog
2个回答
7
投票
db = session.resource('dynamodb', region_name="us-east-2")
tables = list(db.tables.all())
print(tables)

资源 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/dynamodb.html


0
投票

只要您知道数据目录的名称,就可以将 boto3 与 Athena 客户端的 list_table_metadata 方法一起使用 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/athena/client /list_table_metadata.html

import boto3

client = boto3.client("athena", region_name="us-east-2")
table_metadata = client.list_table_metadata(CatalogName=`CatalogName`, DatabaseName=`test_db`)
print(table_metadata)

这将返回有关数据库中表的元数据字典。如果您只想获取表的名称,则可以使用一些列表理解:

[table["Name"] for table in table_metadata['TableMetadataList']]
© www.soinside.com 2019 - 2024. All rights reserved.