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

Метод get_columns класса Inspector

Метод get_columns класса Inspector возвращает информацию о колонках указанной таблицы. Первым параметром метод принимает имя таблицы. Вторым необязательным параметром передается имя схемы. Метод возвращает список словарей, каждый из которых описывает одну колонку: имя, тип, признак nullable, значение по умолчанию и другие атрибуты.

Синтаксис

inspector.get_columns(table_name, [schema])

Пример

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

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(100) NOT NULL, text TEXT ) ''')) conn.commit() inspector = inspect(engine) res = inspector.get_columns('articles') for column in res: print(column['name'], column['type'], column['nullable'])

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

"id INTEGER False" "title VARCHAR(100) False" "text TEXT True"

Пример

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

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(100) NOT NULL, status VARCHAR(20) DEFAULT 'draft' ) ''')) conn.commit() inspector = inspect(engine) res = inspector.get_columns('articles') for column in res: print(column)

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

{'name': 'id', 'type': INTEGER(), 'nullable': False, 'default': None, 'autoincrement': 'auto', 'primary_key': 1} {'name': 'title', 'type': VARCHAR(length=100), 'nullable': False, 'default': None, 'autoincrement': 'auto', 'primary_key': 0} {'name': 'status', 'type': VARCHAR(length=20), 'nullable': True, 'default': "'draft'", 'autoincrement': 'auto', 'primary_key': 0}

Пример

Давайте получим колонки таблицы, созданной через ORM-модель:

from sqlalchemy import create_engine, inspect from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] num: Mapped[int] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) inspector = inspect(engine) res = inspector.get_columns('articles') for column in res: print(column['name'], column['type'], column['nullable'])

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

"id INTEGER False" "title VARCHAR False" "num INTEGER False"

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

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