1. ホーム
  2. python

[解決済み] SQLAlchemy - テーブルのリストを取得する

2022-07-06 20:45:19

質問

ドキュメントに情報がなかったのですが、SQLAlchemyで作成されたテーブルの一覧を取得するにはどうしたらよいでしょうか?

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

どのように解決するのですか?

すべてのテーブルを tables 属性にまとめられています。 それらのテーブルの名前のリストを得るには。

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

declarative 拡張を使っているのであれば、おそらくメタデータを自分で管理することはないでしょう。 幸いなことに、メタデータはベースクラス上にまだ存在しています。

>>> 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)