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

Класс FetchedValue

Класс FetchedValue помечает колонку, значение которой вычисляется базой данных, а не приложением. Такую колонку не нужно указывать в INSERT и UPDATE - SQLAlchemy получит значение из базы после выполнения запроса. Конструктор не принимает обязательных параметров, но можно передать флаг for_update, который указывает, что значение обновляется при каждом изменении строки.

Синтаксис

FetchedValue(for_update=False)

Пример

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

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

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

100

Пример

Давайте посмотрим, как FetchedValue влияет на итоговый SQL-запрос при вставке новой строки:

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

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

INSERT INTO articles (title) VALUES (?)

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

  • класс Computed,
    который задает вычисляемое базой данных значение
  • класс Identity,
    который задает автоинкрементную колонку
  • класс Constraint,
    который представляет ограничение таблицы
  • класс CreateTable,
    который описывает SQL-выражение CREATE TABLE
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить