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

Класс Inspector

Класс Inspector позволяет получить информацию о структуре базы данных: список таблиц, колонок, первичных и внешних ключей, индексов, представлений и других объектов схемы. Экземпляр класса создается с помощью функции inspect, первым параметром которой передается движок или соединение с базой данных.

Синтаксис

from sqlalchemy import inspect inspector = inspect(engine)

Пример

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

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

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

"<sqlalchemy.engine.reflection.Inspector object at 0x...>"

Пример

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

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.commit() inspector = inspect(engine) res = inspector.get_table_names() print(res)

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

['articles']

Пример

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

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 VARCHAR, status VARCHAR, num INTEGER)')) conn.commit() inspector = inspect(engine) res = inspector.get_columns('articles') for column in res: print(column['name'], column['type'])

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

id INTEGER title VARCHAR text VARCHAR status VARCHAR num INTEGER

Пример

Давайте проверим наличие таблицы в базе данных с помощью метода has_table:

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.commit() inspector = inspect(engine) print(inspector.has_table('articles')) print(inspector.has_table('users'))

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

True False

Пример

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

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.commit() inspector = inspect(engine) res = inspector.get_pk_constraint('articles') print(res)

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

{'constrained_columns': ['id'], 'name': None}

Пример

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

from sqlalchemy import create_engine, inspect, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR)')) conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users (id))')) conn.commit() inspector = inspect(engine) res = inspector.get_foreign_keys('articles') for fk in res: print(fk['constrained_columns'], '->', fk['referred_table'], fk['referred_columns'])

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

['user_id'] -> users ['id']

Пример

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

from sqlalchemy import create_engine, inspect engine = create_engine('sqlite:///:memory:') inspector = inspect(engine) res = inspector.get_schema_names() print(res)

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

['main']

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

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