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

Класс Identity

Класс Identity представляет конструкцию IDENTITY и используется в параметре Identity при определении колонки. Он указывает базе данных генерировать значения автоматически. Первым параметром передается начальное значение, а параметром always можно запретить ручное заполнение колонки.

Синтаксис

Identity(start, [increment], [always])

Пример

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

from sqlalchemy import Identity, String, create_engine, insert from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Identity(start=1), primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(Article).values(title='article')) res = conn.execute(Article.__table__.select()).fetchall() print(res)

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

[(1, 'article')]

Пример

Давайте зададим начальное значение и шаг инкремента через параметры start и increment:

from sqlalchemy import Identity, String, create_engine, insert from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Identity(start=100, increment=10), primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(Article).values(title='article')) res = conn.execute(Article.__table__.select()).fetchall() print(res)

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

[(100, 'article')]

Пример

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

from sqlalchemy import Identity, String, create_engine, insert from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Identity(always=True), primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(Article).values(title='article')) res = conn.execute(Article.__table__.select()).fetchall() print(res)

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

[(1, 'article')]

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

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