所有表都收集在
tablesSQLAlchemy metaData对象的属性中。要获取这些表的名称列表:
>>> metadata.tables.keys()['posts', 'comments', 'users']
如果使用声明性扩展,则可能不是您自己管理元数据。幸运的是,元数据仍然存在于基类中,
>>> base = sqlalchemy.ext.declarative.declarative_base()>>> base.metadatametaData(None)
如果您试图弄清楚数据库中存在哪些表,甚至还没有告诉SQLAlchemy的表,那么可以使用表反射。然后,SQLAlchemy将检查数据库并使用所有缺少的表更新元数据。
>>> metadata.reflect(engine)
对于Postgres,如果您有多个架构,则需要遍历引擎中的所有架构:
from sqlalchemy import inspectinspector = 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)


