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

Функция inspect

Функция inspect создает объект инспектора, который предоставляет доступ к внутренней структуре различных объектов SQLAlchemy: движков, соединений, сессий, маппированных классов и их экземпляров. Первым параметром функция принимает объект для инспектирования. Вторым необязательным параметром можно передать флаг raiseerr, который определяет поведение при невозможности создать инспектор.

Синтаксис

inspect(subject, [raiseerr])

Пример

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

from sqlalchemy import create_engine, inspect engine = create_engine('sqlite:///:memory:') insp = inspect(engine) print(type(insp))

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

<class 'sqlalchemy.engine.reflection.Inspector'>

Пример

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

from sqlalchemy import create_engine, inspect, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title VARCHAR, text TEXT, status VARCHAR, num INTEGER)')) conn.commit() insp = inspect(engine) columns = insp.get_columns('articles') for col in columns: print(col['name'], col['type'])

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

id INTEGER title VARCHAR text TEXT status VARCHAR num INTEGER

Пример

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

from sqlalchemy import create_engine, inspect, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title VARCHAR)')) conn.execute(text('CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR)')) conn.commit() insp = inspect(engine) tables = insp.get_table_names() print(tables)

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

['articles', 'users']

Пример

Давайте создадим инспектор для экземпляра модели и получим информацию о его состоянии:

from sqlalchemy import create_engine, inspect, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) text: Mapped[str] = mapped_column(String) status: Mapped[str] = mapped_column(String) num: Mapped[int] = mapped_column(Integer) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', text='text', status='active', num=1) session.add(article) session.commit() insp = inspect(article) print(insp.identity) print(insp.transient) print(insp.persistent)

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

(1,) False True

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

  • функцию inspect,
    которая создает объект инспектора
  • атрибут instance_state,
    который возвращает состояние экземпляра модели
  • функцию identity_key,
    которая возвращает идентификационный ключ объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить