Я следую документации sqlalchemy для отображения таблиц базы данных с использованием automap
: http://docs.sqlalchemy.org/en/latest/orm/extensions/automap.html#generating-mappings-from-an-existing-metadata.Automap отражает таблицы в схеме postgres с sqlalchemy
Когда я не конкретная схема, и Postgres использует схему по умолчанию public
, это работает, как ожидалось, и я нахожу имена моих таблиц:
>>> m = MetaData()
>>> b = automap_base(bind=engine, metadata=m)
>>> b.prepare(engine, reflect=True)
>>> b.classes.keys()
['ads', 'spatial_ref_sys', 'income']
Но когда я конкретная явная схема, У меня нет доступа к таблицам в Base.classes
.
>>> m = MetaData(schema='geography')
>>> b = automap_base(bind=engine, metadata=m)
>>> b.prepare(engine, reflect=True)
>>> b.classes.keys()
[]
метаданные отражены правильно, хотя:
>>> b.metadata.tables
immutabledict({geography.usa_cbsa_centroids': Table('usa_cbsa_centroids', MetaData(bind=Engine(postgresql://asteroids:***@localhost:5432/asteroids)), Column('GEOID', VARCHAR(length=5), table=<u
sa_cbsa_centroids>, nullable=False), ...})
Обрати внимание, что таблицы и столбцы известны только во время выполнения.