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

Функция mapped_column

Функция mapped_column создает объект колонки для использования в декларативных моделях SQLAlchemy. Она принимает параметры колонки, такие как тип, первичный ключ, внешний ключ, значение по умолчанию и другие. Функция применяется вместе с аннотацией Mapped для указания типа поля модели.

Синтаксис

mapped_column(column_type, *args, **kwargs)

Пример

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

from sqlalchemy import create_engine 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] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) print(Article.__table__)

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

"Table('articles', MetaData(), Column('id', Integer(), table=<articles>, primary_key=True, nullable=False), Column('title', String(), table=<articles>, nullable=False), schema=None)"

Пример

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

from sqlalchemy import create_engine, String 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] = mapped_column(String(100)) status: Mapped[str] = mapped_column(default='draft') num: Mapped[int] = mapped_column(default=0) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) for column in Article.__table__.columns: print(column.name, column.type, column.default)

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

"id INTEGER None" "title VARCHAR(100) None" "status VARCHAR None" "num INTEGER None"

Пример

Давайте создадим объект модели и сохраним его в базе данных, чтобы проверить работу mapped_column со значениями по умолчанию:

from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] text: Mapped[str] = mapped_column(default='') status: Mapped[str] = mapped_column(default='draft') num: Mapped[int] = mapped_column(default=0) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article') session.add(article) session.commit() print(article.id, article.title, article.text, article.status, article.num)

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

"1 article draft 0"

Пример

Давайте зададим колонку с уникальным значением и индексом через mapped_column:

from sqlalchemy import create_engine 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] = mapped_column(unique=True, index=True) text: Mapped[str] = mapped_column(nullable=True) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) print(Article.__table__.columns['title'].unique) print(Article.__table__.columns['title'].index)

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

"True" "True"

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

  • класс DeclarativeBase,
    который является базой для декларативных моделей
  • класс Mapped,
    который задает тип поля модели
  • функцию mapped,
    которая настраивает маппинг атрибута модели
  • функцию column_property,
    которая добавляет вычисляемое свойство в модель
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить