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

Функция between

Функция between создает условие SQL BETWEEN, которое проверяет, попадает ли значение колонки в диапазон между нижней и верхней границами включительно. Первым параметром передается колонка или выражение, вторым - нижняя граница, третьим - верхняя граница. Условие возвращает True, если значение находится в указанном диапазоне.

Синтаксис

between(column, lower_bound, upper_bound)

Пример

Давайте создадим таблицу articles и выберем строки, у которых значение колонки num находится в диапазоне от 10 до 20:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, between engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('num', Integer), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'num': 5}, {'title': 'article 2', 'num': 15}, {'title': 'article 3', 'num': 25}, ]) stmt = select(articles.c.title).where(between(articles.c.num, 10, 20)) res = conn.execute(stmt).fetchall() print(res)

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

[('article 2',)]

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

SELECT articles.title FROM articles WHERE articles.num BETWEEN 10 AND 20

Пример

Функцию between можно вызывать как метод колонки. Давайте выберем строки, у которых id находится в диапазоне от 1 до 2:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('num', Integer), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'num': 5}, {'title': 'article 2', 'num': 15}, {'title': 'article 3', 'num': 25}, ]) stmt = select(articles.c.title).where(articles.c.id.between(1, 2)) res = conn.execute(stmt).fetchall() print(res)

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

[('article 1',), ('article 2',)]

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

SELECT articles.title FROM articles WHERE articles.id BETWEEN 1 AND 2

Пример

Функция between поддерживает отрицание через оператор ~. Давайте выберем строки, у которых значение num не входит в диапазон от 10 до 20:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, between engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('num', Integer), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'num': 5}, {'title': 'article 2', 'num': 15}, {'title': 'article 3', 'num': 25}, ]) stmt = select(articles.c.title).where(~between(articles.c.num, 10, 20)) res = conn.execute(stmt).fetchall() print(res)

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

[('article 1',), ('article 3',)]

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

SELECT articles.title FROM articles WHERE articles.num NOT BETWEEN 10 AND 20

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

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