Todas las tablas se recopilan en las tables
atributo del objeto SQLAlchemy MetaData. Para obtener una lista de los nombres de esas tablas:
>>> metadata.tables.keys()
['posts', 'comments', 'users']
Si usa la extensión declarativa, probablemente no esté administrando los metadatos usted mismo. Afortunadamente, los metadatos todavía están presentes en la clase base,
>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)
Si está tratando de averiguar qué tablas están presentes en su base de datos, incluso entre las que aún no le ha dicho a SQLAlchemy, entonces puede usar la reflexión de la tabla. SQLAlchemy luego inspeccionará la base de datos y actualizará los metadatos con todas las tablas faltantes.
>>> metadata.reflect(engine)
Para Postgres, si tiene varios esquemas, deberá recorrer todos los esquemas en el motor:
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)