Атрибут increment класса Sequence
Атрибут increment класса Sequence хранит
шаг приращения значений последовательности. По умолчанию
он равен 1, то есть каждое следующее значение
увеличивается на единицу. Атрибут задается при создании
объекта последовательности параметром increment.
Значение атрибута можно прочитать после создания.
Синтаксис
Sequence(name, [increment])
Пример
Давайте создадим последовательность со стандартным шагом приращения и выведем значение атрибута:
from sqlalchemy import Sequence
seq = Sequence('article_id_seq')
print(seq.increment)
Результат выполнения кода:
1
Пример
Давайте зададим шаг приращения равным 10
и проверим значение атрибута:
from sqlalchemy import Sequence
seq = Sequence('article_id_seq', increment=10)
print(seq.increment)
Результат выполнения кода:
10
Пример
Давайте используем последовательность с шагом 5
в качестве серверного значения по умолчанию для колонки:
from sqlalchemy import create_engine, Sequence, Integer, String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
engine = create_engine('sqlite:///:memory:')
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(
Integer,
Sequence('article_id_seq', increment=5),
primary_key=True
)
title: Mapped[str] = mapped_column(String)
Base.metadata.create_all(engine)
seq = Sequence('article_id_seq', increment=5)
print(seq.increment)
Результат выполнения кода:
5
Пример
Давайте сгенерируем SQL-запрос создания последовательности с нестандартным шагом:
from sqlalchemy import create_engine, Sequence
from sqlalchemy.schema import CreateSequence
engine = create_engine('sqlite:///:memory:')
seq = Sequence('article_id_seq', increment=3)
print(CreateSequence(seq).compile(engine))
Итоговый SQL запрос:
CREATE SEQUENCE article_id_seq INCREMENT BY 3