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

Функция and_

Функция and_ объединяет переданные условия в одно логическое выражение, соединяя их оператором AND. Функция принимает произвольное число аргументов, каждый из которых является условием или выражением. Возвращается объект, который можно передать в метод where запроса SELECT.

Синтаксис

and_(*clauses)

Пример

Давайте объединим два условия с помощью функции and_:

from sqlalchemy import create_engine, and_, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] text: Mapped[str] status: Mapped[str] num: Mapped[int] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1', text='text 1', status='active', num=1), Article(title='article 2', text='text 2', status='draft', num=2), Article(title='article 3', text='text 3', status='active', num=3), ]) session.commit() stmt = select(Article.title).where( and_(Article.status == 'active', Article.num > 1) ) res = session.execute(stmt).scalars().all() print(res)

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

['article 3']

Пример

Итоговый SQL-запрос при использовании функции and_ будет таким:

SELECT articles.title FROM articles WHERE articles.status = 'active' AND articles.num > 1

Пример

Давайте передадим в функцию and_ три условия одновременно:

from sqlalchemy import create_engine, and_, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] text: Mapped[str] status: Mapped[str] num: Mapped[int] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1', text='text 1', status='active', num=1), Article(title='article 2', text='text 2', status='active', num=5), Article(title='article 3', text='text 3', status='draft', num=10), ]) session.commit() stmt = select(Article.title).where( and_( Article.status == 'active', Article.num > 1, Article.num < 10, ) ) res = session.execute(stmt).scalars().all() print(res)

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

['article 2']

Пример

Давайте используем функцию and_ вместе с функцией or_ для построения составного условия:

from sqlalchemy import create_engine, and_, or_, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] text: Mapped[str] status: Mapped[str] num: Mapped[int] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1', text='text 1', status='active', num=1), Article(title='article 2', text='text 2', status='draft', num=5), Article(title='article 3', text='text 3', status='active', num=10), ]) session.commit() stmt = select(Article.title).where( and_( Article.status == 'active', or_(Article.num < 2, Article.num > 8), ) ) res = session.execute(stmt).scalars().all() print(res)

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

['article 1', 'article 3']

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

  • функцию or_,
    которая объединяет условия оператором OR
  • функцию not_,
    которая инвертирует логическое выражение
  • функцию true,
    которая представляет логическую истину
  • функцию false,
    которая представляет логическую ложь
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить