Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQLAlchemy - Obtenir une liste de tables

Toutes les tables sont rassemblées dans les tables attribut de l'objet SQLAlchemy MetaData. Pour obtenir une liste des noms de ces tables :

>>> metadata.tables.keys()
['posts', 'comments', 'users']

Si vous utilisez l'extension déclarative, vous ne gérez probablement pas les métadonnées vous-même. Heureusement, les métadonnées sont toujours présentes sur la classe de base,

>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)

Si vous essayez de déterminer quelles tables sont présentes dans votre base de données, même parmi celles dont vous n'avez même pas encore parlé à SQLAlchemy, vous pouvez utiliser la réflexion de table. SQLAlchemy inspectera ensuite la base de données et mettra à jour les métadonnées avec toutes les tables manquantes.

>>> metadata.reflect(engine)

Pour Postgres, si vous avez plusieurs schémas, vous devrez parcourir tous les schémas du moteur :

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)