Атрибут start класса Sequence
Атрибут start класса Sequence задает
начальное значение последовательности. По умолчанию
оно равно 1. Это значение определяет, с какого
числа начнется генерация значений при первом
обращении к последовательности.
Атрибут доступен как при создании объекта
Sequence через параметр start, так и
для чтения через одноименное свойство.
Синтаксис
Sequence(name, start=1)
Свойство для чтения значения:
sequence.start
Пример
Давайте создадим последовательность с начальным значением по умолчанию и выведем его:
from sqlalchemy import Sequence
seq = Sequence('article_id_seq')
print(seq.start)
Результат выполнения кода:
"1"
Пример
Давайте зададим начальное значение явно через
параметр start:
from sqlalchemy import Sequence
seq = Sequence('article_id_seq', start=100)
print(seq.start)
Результат выполнения кода:
"100"
Пример
Давайте используем последовательность с ненулевым начальным значением в качестве значения по умолчанию для первичного ключа модели:
from sqlalchemy import Sequence
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
article_id_seq = Sequence('article_id_seq', start=1000)
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(article_id_seq, primary_key=True)
title: Mapped[str]
text: Mapped[str]
При вставке первой строки в таблицу articles
поле id получит значение 1000,
а каждая следующая строка увеличит его на шаг
последовательности.
Пример
Давайте проверим, как начальное значение влияет на генерацию значений при создании таблицы:
from sqlalchemy import Sequence, create_engine, text
engine = create_engine('sqlite:///:memory:')
seq = Sequence('article_id_seq', start=50)
print(seq.start)
with engine.connect() as conn:
conn.execute(text('SELECT 1'))
Результат выполнения кода:
"50"
Смотрите также
-
класс
Sequence,
который представляет последовательность -
атрибут
increment,
который задает шаг последовательности -
атрибут
name,
который задает имя последовательности -
метод
next_value,
который возвращает следующее значение