131

ドキュメントでこれに関する情報を見つけることができませんでしたが、SQLAlchemy で作成されたテーブルのリストを取得するにはどうすればよいですか?

クラス メソッドを使用してテーブルを作成しました。

4

14 に答える 14

125

すべてのテーブルはtables、SQLAlchemyMetaDataオブジェクトの属性に収集されます。これらのテーブルの名前のリストを取得するには、次のようにします。

>>> metadata.tables.keys()
['posts', 'comments', 'users']

宣言型拡張機能を使用している場合は、メタデータを自分で管理していない可能性があります。幸い、メタデータはまだベースクラスに存在しますが、

>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)

データベースにどのテーブルが存在するかを把握しようとしている場合は、SQLAlchemyにまだ通知していないテーブルの中でも、テーブルリフレクションを使用できます。次に、SQLAlchemyはデータベースを検査し、欠落しているすべてのテーブルでメタデータを更新します。

>>> metadata.reflect(engine)

Postgresの場合、複数のスキーマがある場合は、エンジン内のすべてのスキーマをループする必要があります。

from sqlalchemy import inspect
inspector = inspect(engine)
schemas = inspector.get_schema_names()

for schema in schemas:
    print("schema: %s" % schema)
    for table_name in inspector.get_table_names(schema=schema):
        for column in inspector.get_columns(table_name, schema=schema):
            print("Column: %s" % column)
于 2011-06-24T21:40:08.987 に答える
98

engineオブジェクトには、テーブル名のリストを取得するメソッドがあります。engine.table_names()

于 2015-05-31T06:51:20.663 に答える
6

テーブルを作成したメタデータ オブジェクトは、ディクショナリにそれを持っています。

metadata.tables.keys()
于 2011-06-24T21:42:21.273 に答える