Všechny tabulky jsou shromážděny v tables
atribut objektu SQLAlchemy MetaData. Chcete-li získat seznam názvů těchto tabulek:
>>> metadata.tables.keys()
['posts', 'comments', 'users']
Pokud používáte deklarativní rozšíření, pravděpodobně nespravujete metadata sami. Naštěstí jsou metadata stále přítomna v základní třídě,
>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)
Pokud se snažíte zjistit, jaké tabulky jsou přítomné ve vaší databázi, dokonce i mezi těmi, o kterých jste SQLAlchemy ještě neřekli, můžete použít reflexi tabulek. SQLAlchemy poté zkontroluje databázi a aktualizuje metadata se všemi chybějícími tabulkami.
>>> metadata.reflect(engine)
Pro Postgres, pokud máte více schémat, budete muset procházet všemi schématy v enginu:
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)