Всички таблици са събрани в tables
атрибут на обекта SQLAlchemy MetaData. За да получите списък с имената на тези таблици:
>>> 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)