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

Метод in_ класса ColumnElement

Метод in_ класса ColumnElement создает выражение для проверки вхождения значения столбца в заданный список значений или в подзапрос. Метод принимает один параметр - последовательность значений или объект подзапроса. Результатом является бинарное выражение, которое можно использовать в конструкции where.

Синтаксис

ColumnElement.in_(other)

Пример

Давайте создадим таблицу и проверим вхождение значения столбца в список:

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), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 1'}, {'id': 2, 'title': 'article 2'}, {'id': 3, 'title': 'article 3'}, ]) query = select(articles.c.title).where(articles.c.id.in_([1, 3])) res = conn.execute(query).fetchall() print(res)

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

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

Пример

Давайте используем метод in_ с подзапросом:

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('status', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'status': 'published'}, {'id': 2, 'status': 'draft'}, {'id': 3, 'status': 'published'}, ]) subquery = select(articles.c.id).where(articles.c.status == 'published') query = select(articles.c.id).where(articles.c.id.in_(subquery)) res = conn.execute(query).fetchall() print(res)

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

[(1,), (3,)]

Пример

Давайте применим метод in_ совместно с отрицанием через notin_ для сравнения:

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('num', Integer), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'num': 10}, {'id': 2, 'num': 20}, {'id': 3, 'num': 30}, ]) query_in = select(articles.c.id).where(articles.c.num.in_([10, 30])) res_in = conn.execute(query_in).fetchall() print(res_in) query_notin = select(articles.c.id).where(articles.c.num.notin_([10, 30])) res_notin = conn.execute(query_notin).fetchall() print(res_notin)

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

[(1,), (3,)] [(2,)]

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

  • класс ColumnElement,
    который представляет базовый класс для элементов столбцов
  • метод notin_,
    который выполняет проверку на отсутствие вхождения
  • метод between,
    который проверяет вхождение значения в диапазон
  • метод is_,
    который выполняет сравнение с NULL или логическим значением
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить