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

Метод self_group

Метод self_group класса ColumnElement создает группировку выражения, оборачивая его в круглые скобки. Метод принимает необязательный параметр against, который указывает элемент, против которого выполняется группировка. Если параметр не передан, возвращается новый объект группировки.

Синтаксис

self_group(against=None)

Пример

Давайте создадим простое выражение и применим к нему метод self_group:

from sqlalchemy import column, and_ expr = and_(column('id') > 1, column('id') < 10) grouped = expr.self_group() print(grouped)

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

"(id > :id_1 AND id < :id_2)"

Пример

Давайте применим метод self_group с параметром against для группировки относительно другого элемента:

from sqlalchemy import column left = column('num') > 5 right = column('num') < 100 grouped = left.self_group(against=right) print(grouped)

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

"num > :num_1"

Пример

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

from sqlalchemy import select, column, and_ from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] expr = and_(column('num') > 1, column('num') < 10) grouped = expr.self_group() stmt = select(Article).where(grouped) print(stmt)

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

SELECT articles.id, articles.title FROM articles WHERE (num > :num_1 AND num < :num_2)

Пример

Давайте применим метод self_group к вложенному выражению:

from sqlalchemy import column, or_, and_ inner = and_(column('status') == 'article', column('num') > 5) inner_grouped = inner.self_group() outer = or_(inner_grouped, column('num') < 1) print(outer)

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

"((status = :status_1 AND num > :num_1) OR num < :num_2)"

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

  • класс ColumnElement,
    который представляет базовый элемент столбца
  • метод operate,
    который выполняет операцию над элементом
  • метод reverse_operate,
    который выполняет обратную операцию над элементом
  • метод bool_op,
    который создает булеву операцию над элементом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить