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

Пространство имён func

Пространство имён func служит для вызова SQL-функций базы данных прямо из Python-кода. Любой атрибут, к которому обращаются через func, автоматически превращается в SQL-функцию с тем же именем. Например, func.count преобразуется в SQL-функцию count, а func.lower - в lower. Аргументами такой функции выступают колонки, литералы и другие выражения SQLAlchemy.

Синтаксис

func.name(argument, ...)

Пример

Давайте вызовем SQL-функцию upper для преобразования строки в верхний регистр:

from sqlalchemy import create_engine, select, func engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: res = conn.execute(select(func.upper('article'))) print(res.scalar())

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

"ARTICLE"

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

SELECT upper('article') AS upper_1

Пример

Давайте создадим таблицу articles и применим агрегатную функцию func.count для подсчета числа строк:

from sqlalchemy import create_engine, select, func, table, column, insert engine = create_engine('sqlite:///:memory:') articles = table( 'articles', column('id'), column('title'), ) with engine.connect() as conn: conn.execute(insert(articles).values([ {'id': 1, 'title': 'article'}, {'id': 2, 'title': 'user'}, ])) res = conn.execute(select(func.count(articles.c.id))) print(res.scalar())

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

2

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

SELECT count(articles.id) AS count_1 FROM articles

Пример

Давайте используем функцию func.length для получения длины названия статьи:

from sqlalchemy import create_engine, select, func, table, column, insert engine = create_engine('sqlite:///:memory:') articles = table( 'articles', column('id'), column('title'), ) with engine.connect() as conn: conn.execute(insert(articles).values([ {'id': 1, 'title': 'article'}, ])) res = conn.execute( select(func.length(articles.c.title)) ) print(res.scalar())

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

7

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

SELECT length(articles.title) AS length_1 FROM articles

Пример

Давайте присвоим псевдоним результату функции через метод label:

from sqlalchemy import create_engine, select, func engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: res = conn.execute( select(func.lower('ARTICLE').label('low')) ) print(res.scalar())

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

"article"

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

SELECT lower('ARTICLE') AS low

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

  • функцию func.count,
    которая подсчитывает число строк
  • функцию func.sum,
    которая суммирует значения колонки
  • функцию func.coalesce,
    которая возвращает первое не NULL значение
  • функцию func.lower,
    которая переводит строку в нижний регистр
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить