Метод 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']
Пример
Давайте отразим таблицу с указанием схемы и выведем типы данных ее колонок:
Результат выполнения кода:
"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,
который возвращает описание первичного ключа