Функция func.next_value
Функция func.next_value создает SQL-выражение,
которое возвращает следующее значение указанной
последовательности базы данных. Функция принимает
первым параметром объект последовательности
Sequence, для которой нужно получить следующее
значение. Такое выражение удобно использовать, когда
требуется заранее сгенерировать идентификатор или
получить значение счетчика напрямую из СУБД.
Чаще всего func.next_value применяется с
последовательностями PostgreSQL и Oracle. В SQLite
последовательности как отдельные объекты не
поддерживаются, поэтому для демонстрации синтаксиса
используется подходящий диалект.
Синтаксис
func.next_value(sequence)
Пример
Давайте создадим последовательность и получим выражение для следующего ее значения:
from sqlalchemy import Sequence, func
article_seq = Sequence('article_seq')
expr = func.next_value(article_seq)
print(expr)
Результат выполнения кода:
next_value(article_seq)
Пример
Давайте выполним выражение через движок SQLite и посмотрим на итоговый SQL-запрос:
from sqlalchemy import Sequence, func, create_engine
engine = create_engine('sqlite:///:memory:')
article_seq = Sequence('article_seq')
expr = func.next_value(article_seq)
with engine.connect() as conn:
print(expr.compile(engine))
Итоговый SQL запрос:
next_value(article_seq)
Пример
Давайте применим func.next_value в запросе
select вместе с меткой:
from sqlalchemy import Sequence, func, select, create_engine
engine = create_engine('sqlite:///:memory:')
article_seq = Sequence('article_seq')
stmt = select(func.next_value(article_seq).label('num'))
print(stmt.compile(engine))
Итоговый SQL запрос:
SELECT next_value(article_seq) AS num
Смотрите также
-
функцию
func,
которая создает произвольные SQL-функции -
функцию
func.current_timestamp,
которая возвращает текущую метку времени -
функцию
func.random,
которая возвращает случайное число -
функцию
literal,
которая создает литеральное SQL-выражение