Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLAlchemy - Obtendo uma lista de tabelas


Todas as tabelas são coletadas em tables atributo do objeto SQLAlchemy MetaData. Para obter uma lista dos nomes dessas tabelas:
>>> metadata.tables.keys()
['posts', 'comments', 'users']

Se você estiver usando a extensão declarativa, provavelmente não estará gerenciando os metadados por conta própria. Felizmente, os metadados ainda estão presentes na classe base,
>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)

Se você está tentando descobrir quais tabelas estão presentes em seu banco de dados, mesmo entre aquelas sobre as quais você ainda não contou ao SQLAlchemy, você pode usar a reflexão de tabela. O SQLAlchemy inspecionará o banco de dados e atualizará os metadados com todas as tabelas ausentes.
>>> metadata.reflect(engine)

Para o Postgres, se você tiver vários esquemas, precisará percorrer todos os esquemas no mecanismo:
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)