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

Метод compile класса TypeEngine

Метод compile класса TypeEngine возвращает диалект-специфичную реализацию типа данных. Первым параметром метод принимает объект диалекта dialect, который описывает особенности конкретной СУБД. Вторым необязательным параметром передается словарь type_expression, содержащий дополнительный контекст компиляции. Метод используется внутри SQLAlchemy при генерации DDL- и SQL-выражений, но может вызываться и напрямую.

Синтаксис

TypeEngine.compile(dialect, [type_expression])

Пример

Давайте скомпилируем тип Integer для диалекта SQLite:

from sqlalchemy import Integer from sqlalchemy.dialects import sqlite compiled = Integer().compile(dialect=sqlite.dialect()) print(compiled)

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

"INTEGER"

Пример

Давайте скомпилируем тип String с указанной длиной для диалекта SQLite:

from sqlalchemy import String from sqlalchemy.dialects import sqlite compiled = String(50).compile(dialect=sqlite.dialect()) print(compiled)

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

"VARCHAR(50)"

Пример

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

from sqlalchemy import String from sqlalchemy.dialects import sqlite, postgresql type_ = String(30) print(type_.compile(dialect=sqlite.dialect())) print(type_.compile(dialect=postgresql.dialect()))

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

VARCHAR(30) VARCHAR(30)

Пример

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

from sqlalchemy import Integer, String, create_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy.schema import CreateTable class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') print(CreateTable(Article.__table__).compile(engine))

Итоговый SQL запрос:

CREATE TABLE articles ( id INTEGER NOT NULL, title VARCHAR(100) NOT NULL, PRIMARY KEY (id) )

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

  • класс TypeEngine,
    который представляет базовый тип данных
  • метод with_variant,
    который создает вариант типа для другого диалекта
  • метод as_generic,
    который возвращает обобщенный тип
  • метод copy,
    который создает копию типа данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить