SQL и общие функции

Функции SQL вызываются с помощью пространства имен func. О том, как использовать объект func для отображения функций SQL в операторы, см. в учебном пособии Работа с функциями SQL.

Функциональный API

Базовый API для функций SQL, который предусматривает пространство имен func, а также классы, которые могут быть использованы для расширения.

Object Name Description

AnsiFunction

Определите функцию в формате «ansi», который не выводит скобки.

Function

Опишите именованную функцию SQL.

FunctionElement

База для функционально-ориентированных конструкций SQL.

GenericFunction

Определите «общую» функцию.

register_function(identifier, fn[, package])

Привязать вызываемую функцию к определенному имени функции.

class sqlalchemy.sql.functions.AnsiFunction

Определите функцию в формате «ansi», который не выводит скобки.

class sqlalchemy.sql.functions.Function

Опишите именованную функцию SQL.

Объект Function обычно генерируется из объекта генерации func.

Параметры:
  • *clauses – список выражений столбцов, которые формируют аргументы вызова функции SQL.

  • type_ – необязательный объект типа данных TypeEngine, который будет использоваться в качестве возвращаемого значения выражения столбца, сгенерированного этим вызовом функции.

  • packagenames – строка, указывающая префиксные имена пакетов, которые будут добавлены к имени функции при генерации SQL. Генератор func создает их при вызове, используя точечный формат, например:: func.mypackage.some_function(col1, col2)

См.также

Работа с функциями SQL - в Унифицированный учебник по SQLAlchemy

func - пространство имен, которое производит зарегистрированные или специальные Function экземпляры.

GenericFunction - позволяет создавать зарегистрированные типы функций.

Members

__init__()

method sqlalchemy.sql.functions.Function.__init__(name: str, *clauses: Any, type_: Optional[_TypeEngineArgument[_T]] = None, packagenames: Optional[Tuple[str, ...]] = None)

Сконструируйте Function.

Конструкция func обычно используется для создания новых экземпляров Function.

class sqlalchemy.sql.functions.FunctionElement

База для функционально-ориентированных конструкций SQL.

Это generic type, что означает, что программы проверки типов и IDE могут быть проинструктированы о том, какие типы следует ожидать в Result для этой функции. Смотрите GenericFunction для примера того, как это делается.

См.также

Работа с функциями SQL - в Унифицированный учебник по SQLAlchemy

Function - именованная SQL-функция.

func - пространство имен, которое производит зарегистрированные или специальные Function экземпляры.

GenericFunction - позволяет создавать зарегистрированные типы функций.

method sqlalchemy.sql.functions.FunctionElement.__init__(*clauses: Any)

Сконструируйте FunctionElement.

Параметры:
  • *clauses – список выражений столбцов, которые формируют аргументы вызова функции SQL.

  • **kwargs – дополнительные kwargs обычно потребляются подклассами.

См.также

func

Function

method sqlalchemy.sql.functions.FunctionElement.alias(name=None, joins_implicitly=False)

Произведите конструкцию Alias против этой FunctionElement.

Совет

Метод FunctionElement.alias() является частью механизма, с помощью которого создаются «табличные» функции SQL. Однако большинство случаев использования покрывается методами более высокого уровня на FunctionElement, включая FunctionElement.table_valued() и FunctionElement.column_valued().

Эта конструкция оборачивает функцию в именованный псевдоним, который подходит для предложения FROM, в стиле, принятом, например, в PostgreSQL. Выражение столбца также предоставляется с помощью специального атрибута .column, который может использоваться для ссылки на выход функции как на скалярное значение в столбцах или в предложении where для бэкенда, например, PostgreSQL.

Для выражения с полным табличным значением сначала используйте метод FunctionElement.table_valued(), чтобы установить именованные столбцы.

например:

>>> from sqlalchemy import func, select, column
>>> data_view = func.unnest([1, 2, 3]).alias("data_view")
>>> print(select(data_view.column))
{printsql}SELECT data_view
FROM unnest(:unnest_1) AS data_view

Метод FunctionElement.column_valued() обеспечивает сокращение вышеупомянутого шаблона:

>>> data_view = func.unnest([1, 2, 3]).column_valued("data_view")
>>> print(select(data_view))
{printsql}SELECT data_view
FROM unnest(:unnest_1) AS data_view

Добавлено в версии 1.4.0b2: Добавлен аксессор .column

Параметры:
  • name – имя псевдонима, будет отображаться как AS <name> в предложении FROM

  • joins_implicitly – при значении True табличная функция может быть использована в предложении FROM без явного JOIN с другими таблицами в SQL-запросе, и предупреждение о «картезианском произведении» не будет выдано. Может быть полезно для таких SQL-функций, как func.json_each(). … versionadded:: 1.4.33

method sqlalchemy.sql.functions.FunctionElement.as_comparison(left_index, right_index)

Интерпретируйте это выражение как булево сравнение между двумя значениями.

Этот метод используется для случая использования ORM, описанного в Пользовательские операторы на основе функций SQL.

Гипотетическая SQL-функция «is_equal()», которая сравнивает значения на равенство, была бы записана на языке выражений Core как:

expr = func.is_equal("a", "b")

Если «is_equal()» выше сравнивает «a» и «b» на равенство, то метод FunctionElement.as_comparison() будет вызван как:

expr = func.is_equal("a", "b").as_comparison(1, 2)

Где выше, целочисленное значение «1» относится к первому аргументу функции «is_equal()», а целочисленное значение «2» - ко второму.

Это создаст BinaryExpression, что эквивалентно:

BinaryExpression("a", "b", operator=op.eq)

Однако на уровне SQL это все равно будет выглядеть как «is_equal(„a“, „b“)».

ORM, когда он загружает связанный объект или коллекцию, должен иметь возможность манипулировать «левой» и «правой» сторонами предложения ON выражения JOIN. Цель этого метода - предоставить конструкцию функции SQL, которая также может предоставлять эту информацию ORM, когда используется с параметром relationship.primaryjoin. Возвращаемым значением является объект содержимого с именем FunctionAsBinary.

Пример ORM выглядит следующим образом:

class Venue(Base):
    __tablename__ = 'venue'
    id = Column(Integer, primary_key=True)
    name = Column(String)

    descendants = relationship(
        "Venue",
        primaryjoin=func.instr(
            remote(foreign(name)), name + "/"
        ).as_comparison(1, 2) == 1,
        viewonly=True,
        order_by=name
    )

Выше, класс «Venue» может загружать объекты потомков «Venue», определяя, содержится ли имя родительского Venue в начале имени гипотетического значения потомка, например, «parent1» будет соответствовать «parent1/child1», но не «parent2/child1».

Возможные варианты использования включают пример «материализованного пути», приведенный выше, а также использование специальных функций SQL, таких как геометрические функции, для создания условий объединения.

Параметры:
  • left_index – целочисленный 1-индекс аргумента функции, который служит «левой» частью выражения.

  • right_index – целочисленный 1-индекс аргумента функции, который служит «правой» частью выражения.

Добавлено в версии 1.3.

См.также

Пользовательские операторы на основе функций SQL - пример использования в рамках ORM

attribute sqlalchemy.sql.functions.FunctionElement.c

синоним для FunctionElement.columns.

attribute sqlalchemy.sql.functions.FunctionElement.clauses

Возвращает базовый ClauseList, который содержит аргументы для данного FunctionElement.

method sqlalchemy.sql.functions.FunctionElement.column_valued(name=None, joins_implicitly=False)

Верните это FunctionElement как выражение столбца, которое выбирает из себя как предложение FROM.

Например:

>>> from sqlalchemy import select, func
>>> gs = func.generate_series(1, 5, -1).column_valued()
>>> print(select(gs))
{printsql}SELECT anon_1
FROM generate_series(:generate_series_1, :generate_series_2, :generate_series_3) AS anon_1

Это сокращение означает:

gs = func.generate_series(1, 5, -1).alias().column
Параметры:
  • name – необязательное имя для присвоения генерируемому псевдониму. Если оно опущено, используется уникальное анонимизирующее имя.

  • joins_implicitly – когда True, часть «таблицы» функции, оцениваемой по столбцу, может быть членом предложения FROM без явного JOIN с другими таблицами в SQL-запросе, и предупреждение о «картезианском произведении» не будет выдано. Может быть полезно для таких SQL-функций, как func.json_array_elements(). … versionadded:: 1.4.46

attribute sqlalchemy.sql.functions.FunctionElement.columns

Набор столбцов, экспортируемых этим FunctionElement.

Это коллекция заполнителей, которая позволяет поместить функцию в предложение FROM оператора:

>>> from sqlalchemy import column, select, func
>>> stmt = select(column('x'), column('y')).select_from(func.myfunction())
>>> print(stmt)
{printsql}SELECT x, y FROM myfunction()

Приведенная выше форма - это унаследованная функция, которая теперь заменена полностью функциональным методом FunctionElement.table_valued(); подробности см. в этом методе.

См.также

FunctionElement.table_valued() - генерирует табличные функциональные выражения SQL.

attribute sqlalchemy.sql.functions.FunctionElement.entity_namespace

переопределяет FromClause.entity_namespace, поскольку функции обычно являются выражениями столбцов, а не FromClauses.

attribute sqlalchemy.sql.functions.FunctionElement.exported_columns
method sqlalchemy.sql.functions.FunctionElement.filter(*criterion)

Создайте предложение FILTER для этой функции.

Используется против агрегатных и оконных функций, для бэкендов баз данных, поддерживающих условие «FILTER».

Выражение:

func.count(1).filter(True)

является сокращением для:

from sqlalchemy import funcfilter
funcfilter(func.count(1), True)
method sqlalchemy.sql.functions.FunctionElement.over(partition_by=None, order_by=None, rows=None, range_=None)

Создайте предложение OVER для этой функции.

Используется против агрегатных или так называемых «оконных» функций, для бэкендов баз данных, поддерживающих оконные функции.

Выражение:

func.row_number().over(order_by='x')

является сокращением для:

from sqlalchemy import over
over(func.row_number(), order_by='x')

Полное описание см. в разделе over().

method sqlalchemy.sql.functions.FunctionElement.scalar_table_valued(name, type_=None)

Возвращает выражение столбца, которое находится против данного FunctionElement в виде скалярного таблично-значного выражения.

Возвращаемое выражение аналогично тому, которое возвращает один столбец, доступ к которому осуществляется через конструкцию FunctionElement.table_valued(), за исключением того, что не генерируется предложение FROM; функция отображается аналогично скалярному подзапросу.

Например:

>>> from sqlalchemy import func, select
>>> fn = func.jsonb_each("{'k', 'v'}").scalar_table_valued("key")
>>> print(select(fn))
{printsql}SELECT (jsonb_each(:jsonb_each_1)).key

Добавлено в версии 1.4.0b2.

method sqlalchemy.sql.functions.FunctionElement.select() Select

Произведите конструкцию select() против этой FunctionElement.

Это сокращение означает:

s = select(function_element)
method sqlalchemy.sql.functions.FunctionElement.self_group(against=None)

Примените «группировку» к этому ClauseElement.

Этот метод переопределяется подклассами для возврата конструкции «группировки», т.е. круглой скобки. В частности, она используется «бинарными» выражениями для обеспечения группировки вокруг себя при помещении в более крупное выражение, а также конструкциями select() при помещении в предложение FROM другого select(). (Обратите внимание, что подзапросы обычно следует создавать с помощью метода Select.alias(), поскольку многие платформы требуют, чтобы вложенные операторы SELECT были именованными).

Поскольку выражения составляются вместе, применение self_group() происходит автоматически - код конечного пользователя никогда не должен использовать этот метод напрямую. Обратите внимание, что в конструкциях клаузул SQLAlchemy учитывается приоритет операторов - поэтому скобки могут не понадобиться, например, в выражении x OR (y AND z) - AND имеет приоритет над OR.

Базовый метод self_group() ClauseElement просто возвращает self.

method sqlalchemy.sql.functions.FunctionElement.table_valued(*expr, **kw)

Возвращает представление TableValuedAlias данного FunctionElement с добавлением выражений с табличными значениями.

например:

>>> fn = (
...     func.generate_series(1, 5).
...     table_valued("value", "start", "stop", "step")
... )

>>> print(select(fn))
{printsql}SELECT anon_1.value, anon_1.start, anon_1.stop, anon_1.step
FROM generate_series(:generate_series_1, :generate_series_2) AS anon_1{stop}

>>> print(select(fn.c.value, fn.c.stop).where(fn.c.value > 2))
{printsql}SELECT anon_1.value, anon_1.stop
FROM generate_series(:generate_series_1, :generate_series_2) AS anon_1
WHERE anon_1.value > :value_1{stop}

Выражение WITH ORDINALITY может быть создано путем передачи аргумента ключевого слова «with_ordinality»:

>>> fn = func.generate_series(4, 1, -1).table_valued("gen", with_ordinality="ordinality")
>>> print(select(fn))
{printsql}SELECT anon_1.gen, anon_1.ordinality
FROM generate_series(:generate_series_1, :generate_series_2, :generate_series_3) WITH ORDINALITY AS anon_1
Параметры:
  • *expr – Серия строковых имен столбцов, которые будут добавлены в коллекцию .c результирующей конструкции TableValuedAlias в качестве столбцов. Также могут быть использованы объекты column() с типами данных или без них.

  • name – необязательное имя для присвоения генерируемому псевдониму. Если оно опущено, используется уникальное анонимизирующее имя.

  • with_ordinality – строковое имя, при наличии которого к псевдониму будет добавлен пункт WITH ORDINALITY, а данное строковое имя будет добавлено в качестве столбца в коллекцию .c результирующего TableValuedAlias.

  • joins_implicitly – при значении True табличная функция может быть использована в предложении FROM без явного JOIN с другими таблицами в SQL-запросе, и предупреждение о «картезианском произведении» не будет выдано. Может быть полезно для таких SQL-функций, как func.json_each(). … versionadded:: 1.4.33

Добавлено в версии 1.4.0b2.

См.также

Функции с табличными значениями - в Унифицированный учебник по SQLAlchemy

Функции с табличными значениями - в документации PostgreSQL

FunctionElement.scalar_table_valued() - вариант FunctionElement.table_valued(), который передает полное табличное ценностное выражение как скалярное выражение столбца

FunctionElement.column_valued()

TableValuedAlias.render_derived() - отображает псевдоним с использованием производного столбца, например, AS name(col1, col2, ...).

method sqlalchemy.sql.functions.FunctionElement.within_group(*order_by)

Создайте предложение WITHIN GROUP (ORDER BY expr) для этой функции.

Используется против так называемых «упорядоченных агрегатов множеств» и «гипотетических агрегатов множеств», включая функции percentile_cont, rank, dense_rank и т.д.

Полное описание см. в разделе within_group().

method sqlalchemy.sql.functions.FunctionElement.within_group_type(within_group)

Для типов, которые определяют свой тип возврата как основанный на критериях внутри выражения WITHIN GROUP (ORDER BY), вызываемого конструкцией WithinGroup.

По умолчанию возвращает None, в этом случае используется обычная функция .type.

class sqlalchemy.sql.functions.GenericFunction

Определите «общую» функцию.

Родовая функция - это предварительно созданный класс Function, который инстанцируется автоматически при вызове по имени из атрибута func. Обратите внимание, что при вызове любого имени из func происходит автоматическое создание нового экземпляра Function, заданного этим именем. Основное применение для определения класса GenericFunction заключается в том, чтобы функция с определенным именем могла иметь фиксированный тип возврата. Он также может включать пользовательские схемы разбора аргументов, а также дополнительные методы.

Подклассы GenericFunction автоматически регистрируются под именем класса. Например, определяемая пользователем функция as_utc() будет доступна сразу:

from sqlalchemy.sql.functions import GenericFunction
from sqlalchemy.types import DateTime

class as_utc(GenericFunction):
    type = DateTime()
    inherit_cache = True

print(select(func.as_utc()))

Определяемые пользователем общие функции могут быть организованы в пакеты путем указания атрибута «package» при определении GenericFunction. Сторонние библиотеки, содержащие множество функций, могут захотеть использовать это, чтобы избежать конфликтов имен с другими системами. Например, если бы наша функция as_utc() была частью пакета «time»:

class as_utc(GenericFunction):
    type = DateTime()
    package = "time"
    inherit_cache = True

Приведенная выше функция будет доступна из func, используя имя пакета time:

print(select(func.time.as_utc()))

Последним вариантом является разрешение доступа к функции по одному имени в func, но для отображения в виде другого имени. Атрибут identifier будет переопределять имя, используемое для доступа к функции, загруженной из func, но сохранит использование name в качестве отрисованного имени:

class GeoBuffer(GenericFunction):
    type = Geometry()
    package = "geo"
    name = "ST_Buffer"
    identifier = "buffer"
    inherit_cache = True

Приведенная выше функция будет выглядеть следующим образом:

>>> print(func.geo.buffer())
{printsql}ST_Buffer()

Имя будет отображаться как есть, но без кавычек, если только имя не содержит специальных символов, требующих кавычек. Чтобы включить или выключить кавычки для имени, используйте конструкцию quoted_name:

from sqlalchemy.sql import quoted_name

class GeoBuffer(GenericFunction):
    type = Geometry()
    package = "geo"
    name = quoted_name("ST_Buffer", True)
    identifier = "buffer"
    inherit_cache = True

Приведенная выше функция будет выглядеть так:

>>> print(func.geo.buffer())
{printsql}"ST_Buffer"()

Параметры типа для этого класса могут быть переданы в виде generic type и должны соответствовать типу, указанному в Result. Например:

class as_utc(GenericFunction[datetime.datetime]):
    type = DateTime()
    inherit_cache = True

Выше указано, что следующее выражение возвращает объект datetime:

connection.scalar(select(func.as_utc()))

Добавлено в версии 1.3.13: Конструкция quoted_name теперь распознается для кавычек при использовании с атрибутом «name» объекта, так что кавычки могут быть принудительно включены или выключены для имени функции.

function sqlalchemy.sql.functions.register_function(identifier, fn, package='_default')

Привязать вызываемую функцию к определенному имени функции.

Обычно он вызывается GenericFunction, но также доступен сам по себе, чтобы можно было связать конструкцию, не относящуюся к функции, с аксессором func (т.е. CAST, EXTRACT).

Отдельные «известные» функции

Это GenericFunction реализации для выбранного набора общих функций SQL, которые автоматически устанавливают ожидаемый тип возврата для каждой функции. Они вызываются так же, как и любой другой член пространства имен func:

select(func.count("*")).select_from(some_table)

Обратите внимание, что любое имя, не известное func, генерирует имя функции как есть - нет никаких ограничений на то, какие SQL функции могут быть вызваны, известные или неизвестные SQLAlchemy, встроенные или определенные пользователем. В данном разделе описаны только те функции, для которых SQLAlchemy уже знает, какие типы аргументов и возвратов используются.

Object Name Description

array_agg

Поддержка функции ARRAY_AGG.

char_length

SQL-функция CHAR_LENGTH().

coalesce

concat

Функция SQL CONCAT(), которая объединяет строки.

count

Агрегатная функция ANSI COUNT. При отсутствии аргументов выдает COUNT *.

cube

Реализуйте операцию группировки CUBE.

cume_dist

Реализуйте агрегатную функцию гипотетического множества cume_dist.

current_date

SQL-функция CURRENT_DATE().

current_time

SQL-функция CURRENT_TIME().

current_timestamp

SQL-функция CURRENT_TIMESTAMP().

current_user

SQL-функция CURRENT_USER().

dense_rank

Реализуйте агрегатную функцию гипотетического множества dense_rank.

grouping_sets

Реализуйте операцию группировки GROUPING SETS.

localtime

SQL-функция localtime().

localtimestamp

SQL-функция localtimestamp().

max

Агрегатная функция SQL MAX().

min

Агрегатная функция SQL MIN().

mode

Реализуйте функцию агрегации упорядоченных множеств mode.

next_value

Представляет «следующее значение», учитывая Sequence в качестве единственного аргумента.

now

Функция SQL now() для определения времени.

percent_rank

Реализуйте агрегатную функцию гипотетического множества percent_rank.

percentile_cont

Реализуйте функцию агрегации упорядоченных множеств percentile_cont.

percentile_disc

Реализуйте функцию агрегации упорядоченных множеств percentile_disc.

random

SQL-функция RANDOM().

rank

Реализуйте агрегатную функцию гипотетического множества rank.

rollup

Реализуйте операцию группировки ROLLUP.

session_user

SQL-функция SESSION_USER().

sum

Агрегатная функция SQL SUM().

sysdate

SQL-функция SYSDATE().

user

SQL-функция USER().

class sqlalchemy.sql.functions.array_agg

Поддержка функции ARRAY_AGG.

Конструкция func.array_agg(expr) возвращает выражение типа ARRAY.

например:

stmt = select(func.array_agg(table.c.values)[2:5])

См.также

array_agg() - специфическая для PostgreSQL версия, возвращающая ARRAY, в которую добавлены специфические для PG операторы.

class sqlalchemy.sql.functions.char_length

SQL-функция CHAR_LENGTH().

class sqlalchemy.sql.functions.coalesce

Классная подпись

класс sqlalchemy.sql.functions.coalesce (sqlalchemy.sql.functions.ReturnTypeFromArgs)

class sqlalchemy.sql.functions.concat

Функция SQL CONCAT(), которая объединяет строки.

Например:

>>> print(select(func.concat('a', 'b')))
{printsql}SELECT concat(:concat_2, :concat_3) AS concat_1

Конкатенация строк в SQLAlchemy чаще всего доступна с помощью оператора Python + со строковыми типами данных, который выводит специфический для бэкенда оператор конкатенации, такой как :

>>> print(select(literal("a") + "b"))
{printsql}SELECT :param_1 || :param_2 AS anon_1

Классная подпись

класс sqlalchemy.sql.functions.concat (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.count

Агрегатная функция ANSI COUNT. При отсутствии аргументов выдает COUNT *.

Например:

from sqlalchemy import func
from sqlalchemy import select
from sqlalchemy import table, column

my_table = table('some_table', column('id'))

stmt = select(func.count()).select_from(my_table)

Выполнение stmt приведет к появлению:

SELECT count(*) AS count_1
FROM some_table

Классная подпись

класс sqlalchemy.sql.functions.count (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.cube

Реализуйте операцию группировки CUBE.

Эта функция используется как часть GROUP BY оператора, например, Select.group_by():

stmt = select(
    func.sum(table.c.value), table.c.col_1, table.c.col_2
).group_by(func.cube(table.c.col_1, table.c.col_2))

Добавлено в версии 1.2.

Классная подпись

класс sqlalchemy.sql.functions.cube (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.cume_dist

Реализуйте агрегатную функцию гипотетического множества cume_dist.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Тип возврата этой функции - Numeric.

class sqlalchemy.sql.functions.current_date

SQL-функция CURRENT_DATE().

class sqlalchemy.sql.functions.current_time

SQL-функция CURRENT_TIME().

class sqlalchemy.sql.functions.current_timestamp

SQL-функция CURRENT_TIMESTAMP().

class sqlalchemy.sql.functions.current_user

SQL-функция CURRENT_USER().

class sqlalchemy.sql.functions.dense_rank

Реализуйте агрегатную функцию гипотетического множества dense_rank.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Тип возврата этой функции - Integer.

class sqlalchemy.sql.functions.grouping_sets

Реализуйте операцию группировки GROUPING SETS.

Эта функция используется как часть GROUP BY оператора, например, Select.group_by():

stmt = select(
    func.sum(table.c.value), table.c.col_1, table.c.col_2
).group_by(func.grouping_sets(table.c.col_1, table.c.col_2))

Чтобы сгруппировать по нескольким наборам, используйте конструкцию tuple_():

from sqlalchemy import tuple_

stmt = select(
    func.sum(table.c.value),
    table.c.col_1, table.c.col_2,
    table.c.col_3
).group_by(
    func.grouping_sets(
        tuple_(table.c.col_1, table.c.col_2),
        tuple_(table.c.value, table.c.col_3),
    )
)

Добавлено в версии 1.2.

class sqlalchemy.sql.functions.localtime

SQL-функция localtime().

Классная подпись

класс sqlalchemy.sql.functions.localtime (sqlalchemy.sql.functions.AnsiFunction)

class sqlalchemy.sql.functions.localtimestamp

SQL-функция localtimestamp().

class sqlalchemy.sql.functions.max

Агрегатная функция SQL MAX().

Классная подпись

класс sqlalchemy.sql.functions.max (sqlalchemy.sql.functions.ReturnTypeFromArgs)

class sqlalchemy.sql.functions.min

Агрегатная функция SQL MIN().

Классная подпись

класс sqlalchemy.sql.functions.min (sqlalchemy.sql.functions.ReturnTypeFromArgs)

class sqlalchemy.sql.functions.mode

Реализуйте функцию агрегации упорядоченных множеств mode.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Тип возврата этой функции такой же, как и выражение сортировки.

Классная подпись

класс sqlalchemy.sql.functions.mode (sqlalchemy.sql.functions.OrderedSetAgg)

class sqlalchemy.sql.functions.next_value

Представляет «следующее значение», учитывая Sequence в качестве единственного аргумента.

Компилируется в соответствующую функцию на каждом бэкенде, либо выдает ошибку NotImplementedError, если используется на бэкенде, который не обеспечивает поддержку последовательностей.

class sqlalchemy.sql.functions.now

Функция SQL now() для определения времени.

Диалекты SQLAlchemy обычно отображают эту конкретную функцию специфическим для бэкенда способом, например, отображая ее как CURRENT_TIMESTAMP.

Классная подпись

класс sqlalchemy.sql.functions.now (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.percent_rank

Реализуйте агрегатную функцию гипотетического множества percent_rank.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Тип возврата этой функции - Numeric.

class sqlalchemy.sql.functions.percentile_cont

Реализуйте функцию агрегации упорядоченных множеств percentile_cont.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Возвращаемый тип этой функции такой же, как и выражение сортировки, или, если аргументы являются массивом, ARRAY типа выражения сортировки.

Классная подпись

класс sqlalchemy.sql.functions.percentile_cont (sqlalchemy.sql.functions.OrderedSetAgg)

class sqlalchemy.sql.functions.percentile_disc

Реализуйте функцию агрегации упорядоченных множеств percentile_disc.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Возвращаемый тип этой функции такой же, как и выражение сортировки, или, если аргументы являются массивом, ARRAY типа выражения сортировки.

Классная подпись

класс sqlalchemy.sql.functions.percentile_disc (sqlalchemy.sql.functions.OrderedSetAgg)

class sqlalchemy.sql.functions.random

SQL-функция RANDOM().

Классная подпись

класс sqlalchemy.sql.functions.random (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.rank

Реализуйте агрегатную функцию гипотетического множества rank.

Эта функция должна использоваться с модификатором FunctionElement.within_group(), чтобы предоставить выражение сортировки для работы.

Тип возврата этой функции - Integer.

Классная подпись

класс sqlalchemy.sql.functions.rank (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.rollup

Реализуйте операцию группировки ROLLUP.

Эта функция используется как часть GROUP BY оператора, например, Select.group_by():

stmt = select(
    func.sum(table.c.value), table.c.col_1, table.c.col_2
).group_by(func.rollup(table.c.col_1, table.c.col_2))

Добавлено в версии 1.2.

Классная подпись

класс sqlalchemy.sql.functions.rollup (sqlalchemy.sql.functions.GenericFunction)

class sqlalchemy.sql.functions.session_user

SQL-функция SESSION_USER().

class sqlalchemy.sql.functions.sum

Агрегатная функция SQL SUM().

Классная подпись

класс sqlalchemy.sql.functions.sum (sqlalchemy.sql.functions.ReturnTypeFromArgs)

class sqlalchemy.sql.functions.sysdate

SQL-функция SYSDATE().

Классная подпись

класс sqlalchemy.sql.functions.sysdate (sqlalchemy.sql.functions.AnsiFunction)

class sqlalchemy.sql.functions.user

SQL-функция USER().

Классная подпись

класс sqlalchemy.sql.functions.user (sqlalchemy.sql.functions.AnsiFunction)

Вернуться на верх