РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
341 of 711 menu

Метод reflect класса MetaData

Метод reflect класса MetaData читает структуру таблиц напрямую из базы данных и создает соответствующие объекты Table в коллекции метаданных. Первым параметром передается объект подключения bind, который может быть движком или соединением. Параметр only позволяет ограничить список отражаемых таблиц, а schema задает схему базы данных.

Синтаксис

MetaData.reflect(bind, [only], [schema], [views])

Пример

Давайте создадим таблицу в базе SQLite и отразим ее через новый объект метаданных:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) new_metadata = MetaData() new_metadata.reflect(bind=engine) print(new_metadata.tables.keys())

Результат выполнения кода:

"dict_keys(['articles'])"

Пример

Давайте ограничим отражение только одной таблицей через параметр only:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String), ) metadata.create_all(engine) new_metadata = MetaData() new_metadata.reflect(bind=engine, only=['articles']) print(new_metadata.tables.keys())

Результат выполнения кода:

"dict_keys(['articles'])"

Пример

Давайте отразим таблицу и выполним из нее SQL-запрос через select:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, insert engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(articles).values(title='article')) conn.commit() new_metadata = MetaData() new_metadata.reflect(bind=engine) reflected = new_metadata.tables['articles'] with engine.connect() as conn: res = conn.execute(select(reflected.c.title)) print(res.fetchall())

Результат выполнения кода:

[('article',)]

Смотрите также

  • класс MetaData,
    который хранит коллекцию таблиц и схем
  • метод create_all,
    который создает все таблицы в базе данных
  • атрибут tables,
    который содержит словарь отраженных таблиц
  • метод clear,
    который очищает коллекцию метаданных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить