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

Метод reflect_table

Метод reflect_table класса Inspector выполняет отражение (reflection) одной таблицы из базы данных и возвращает объект Table, связанный с переданным объектом MetaData. Первым параметром передается имя таблицы. Вторым параметром идет объект MetaData, в который будет помещено описание таблицы. Третьим необязательным параметром выступает схема schema. Также можно передать дополнительные аргументы через kwargs, например autoload_with, resolve_fks или include_columns.

Синтаксис

Inspector.reflect_table(table_name, metadata, [schema], **kwargs)

Пример

Давайте создадим таблицу articles и отразим ее через инспектор:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import inspect engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer), ) metadata.create_all(engine) inspector = inspect(engine) new_metadata = MetaData() reflected = inspector.reflect_table('articles', new_metadata) print(reflected.name) print([col.name for col in reflected.columns])

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

"articles" ['id', 'title', 'text', 'status', 'num']

Пример

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

<+python+> from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import inspect engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer), ) metadata.create_all(engine) inspector = inspect(engine) new_metadata = MetaData() reflected = inspector.reflect_table( 'articles', new_metadata, schema=None ) for col in reflected.columns: print(col.name, col.type) <-python+>

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

"id INTEGER" "title VARCHAR" "text VARCHAR" "status VARCHAR" "num INTEGER"

Пример

Давайте отразим таблицу, ограничив список колонок параметром include_columns:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import inspect engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer), ) metadata.create_all(engine) inspector = inspect(engine) new_metadata = MetaData() reflected = inspector.reflect_table( 'articles', new_metadata, include_columns=['id', 'title'] ) print([col.name for col in reflected.columns])

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

['id', 'title']

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

  • класс Inspector,
    который предоставляет доступ к метаданным базы
  • метод get_columns,
    который возвращает список колонок таблицы
  • метод get_table_names,
    который возвращает имена всех таблиц базы
  • метод get_pk_constraint,
    который возвращает описание первичного ключа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить