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

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

Метод match класса ColumnElement выполняет полнотекстовый поиск по колонке. Первым параметром метод принимает строку поискового запроса. Метод генерирует SQL-выражение MATCH ... AGAINST, которое поддерживается СУБД с полнотекстовым поиском, например MySQL и PostgreSQL. Для SQLite метод может эмулироваться или вызывать ошибку в зависимости от диалекта.

Синтаксис

column_element.match(search_string)

Пример

Давайте создадим таблицу и применим метод match к колонке title:

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('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) stmt = select(articles).where(articles.c.title.match('article')) print(stmt)

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

"SELECT articles.id, articles.title, articles.text, articles.status, articles.num FROM articles WHERE articles.title MATCH :title_1"

Пример

Давайте выполним запрос с методом match и выведем найденные строки:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, insert engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(articles), [ {'title': 'article one', 'text': 'sql text', 'status': 'active', 'num': 1}, {'title': 'article two', 'text': 'python text', 'status': 'active', 'num': 2}, {'title': 'user note', 'text': 'other text', 'status': 'draft', 'num': 3} ]) conn.commit() stmt = select(articles.c.title).where(articles.c.title.match('article')) res = conn.execute(stmt).fetchall() print(res)

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

[('article one',), ('article two',)]

Пример

Давайте применим метод match к колонке text и отфильтруем строки по статусу:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, insert engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(articles), [ {'title': 'article one', 'text': 'sql text', 'status': 'active', 'num': 1}, {'title': 'article two', 'text': 'python text', 'status': 'active', 'num': 2}, {'title': 'user note', 'text': 'sql draft', 'status': 'draft', 'num': 3} ]) conn.commit() stmt = select(articles.c.title).where( articles.c.text.match('sql'), articles.c.status == 'active' ) res = conn.execute(stmt).fetchall() print(res)

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

[('article one',)]

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

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