Alle Tabellen werden in den tables
gesammelt -Attribut des SQLAlchemy-MetaData-Objekts. So erhalten Sie eine Liste der Namen dieser Tabellen:
>>> metadata.tables.keys()
['posts', 'comments', 'users']
Wenn Sie die deklarative Erweiterung verwenden, verwalten Sie die Metadaten wahrscheinlich nicht selbst. Glücklicherweise sind die Metadaten immer noch in der Basisklasse
vorhanden>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)
Wenn Sie versuchen herauszufinden, welche Tabellen in Ihrer Datenbank vorhanden sind, sogar unter denen, von denen Sie SQLAlchemy noch nicht einmal erzählt haben, dann können Sie Tabellenreflexion verwenden. SQLAlchemy überprüft dann die Datenbank und aktualisiert die Metadaten mit allen fehlenden Tabellen.
>>> metadata.reflect(engine)
Wenn Sie mehrere Schemas für Postgres haben, müssen Sie alle Schemas in der Engine durchlaufen:
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)