版本:1.1.0b2 |发布日期:2016年7月1日

SQLAlchemy 1.1文档

SQL和通用函数

SQLAlchemy已知的关于数据库特定渲染,返回类型和参数行为的SQL函数。通用函数与所有SQL函数一样,使用func属性进行调用:

select([func.count()]).select_from(sometable)

请注意,任何不为func所知的名称都会按原样生成函数名称 - 对SQLAlchemy,内置或用户定义的SQL函数可以调用,已知或未知的SQL函数没有限制。这里的部分只描述了那些SQLAlchemy已经知道使用什么参数和返回类型的函数。

SQL函数API,工厂和内置函数。

class sqlalchemy.sql.functions。 AnsiFunction ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.GenericFunction

标识符 ='AnsiFunction'
姓名 ='AnsiFunction'
class sqlalchemy.sql.functions.Function(name, *clauses, **kw)

基础:sqlalchemy.sql.functions.FunctionElement

描述一个命名的SQL函数。

有关公共方法的描述,请参阅超类FunctionElement

也可以看看

func - 产生注册或临时Function实例的命名空间。

GenericFunction - allows creation of registered function types.

__init__(name, *clauses, **kw)

构建一个Function

func结构通常用于构造新的Function实例。

class sqlalchemy.sql.functions.FunctionElement(*clauses, **kwargs)

基础:sqlalchemy.sql.expression.Executablesqlalchemy.sql.expression.ColumnElementsqlalchemy.sql.expression.FromClause

基于SQL函数的构造。

也可以看看

Function - 名为SQL函数。

func - 产生注册或临时Function实例的命名空间。

GenericFunction - allows creation of registered function types.

__ init __ *子句** kwargs T5>

构造一个FunctionElement

alias(name=None, flat=False)

根据FunctionElement生成Alias结构。

这个构造将函数包装在一个适用于FROM子句的命名别名中,例如Postgresql接受的样式。

例如。:

from sqlalchemy.sql import column

stmt = select([column('data_view')]).\
    select_from(SomeTable).\
    select_from(func.unnest(SomeTable.data).alias('data_view')
)

会产生:

SELECT data_view
FROM sometable, unnest(sometable.data) AS data_view

版本0.9.8新增:现在支持FunctionElement.alias()方法。以前,此方法的行为未定义,并且在各个版本中的行为不一致。

条款 T0> ¶ T1>

返回包含此FunctionElement参数的基础ClauseList

列 T0> ¶ T1>

FunctionElement导出的一组列。

函数对象当前没有内置的结果列名称;此方法返回一个具有匿名名称列的单元素列集合。

为函数提供命名列作为FROM子句的临时方法是使用所需的列构建select()

from sqlalchemy.sql import column

stmt = select([column('x'), column('y')]).                select_from(func.myfunction())
执行 T0> ( T1> ) T2> ¶ T3>

对嵌入的“绑定”执行FunctionElement

这首先调用select()来产生一个SELECT结构。

请注意,可以将FunctionElement传递给ConnectionEngineConnectable.execute()方法。

过滤 T0> ( T1> *标准 T2> ) T3> ¶ T4>

针对此功能生成一个FILTER子句。

用于聚合和窗口函数,用于支持“FILTER”子句的数据库后端。

表达方式:

func.count(1).filter(True)

简写为:

from sqlalchemy import funcfilter
funcfilter(func.count(1), True)

版本1.0.0中的新功能

get_children T0> ( T1> ** kwargs T2> ) T3> ¶ T4>
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()

New in version 0.7.

packagenames =()
标量 T0> ( T1> ) T2> ¶ T3>

对嵌入的“绑定”执行此FunctionElement并返回标量值。

这首先调用select()来产生一个SELECT结构。

请注意,可以将FunctionElement传递给ConnectionEngineConnectable.scalar()方法。

选择 T0> ( T1> ) T2> ¶ T3>

根据FunctionElement产生一个select()结构。

这是简写​​:

s = select([function_element])
self_group T0> ( T1> 针对=无 T2> ) T3> ¶ T4>
within_group T0> ( T1> * ORDER_BY T2> ) T3> ¶ T4>

根据此函数生成一个WITHIN GROUP(ORDER BY expr)子句。

针对所谓的“有序集合”和“假设集合”功能,包括percentile_contrankdense_rank等。

有关完整说明,请参见within_group()

版本1.1中的新功能

within_group_type T0> ( T1> within_group T2> ) T3> ¶ T4>

对于根据由WithinGroup构造调用的WITHIN GROUP(ORDER BY)表达式中的条件定义其返回类型的类型。

默认返回None,在这种情况下使用函数的普通.type

class sqlalchemy.sql.functions.GenericFunction(*args, **kwargs)

基础:sqlalchemy.sql.functions.Function

定义一个“通用”功能。

通用函数是预先建立的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

print select([func.as_utc()])

在定义GenericFunction时,通过指定“package”属性可以将用户定义的泛型函数组织成包。包含许多功能的第三方库可能希望使用此功能以避免与其他系统发生名称冲突。例如,如果我们的as_utc()函数是包“time”的一部分:

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

上面的函数可以从func使用包名称time获得:

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

最后一个选项是允许从func中的某个名称访问该函数,但要呈现为不同的名称。identifier属性将覆盖从func加载的用于访问函数的名称,但会保留name作为呈现名称的用法:

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

上述功能将呈现如下:

>>> print func.geo.buffer()
ST_Buffer()

0.8版新增功能: GenericFunction现在支持新功能的自动注册以及软件包和自定义命名支持。

在版本0.8中更改:属性名称type用于在类级别指定函数的返回类型。以前,使用名称__return_type__这个名字仍然被认为是向后兼容的。

coerce_arguments = True
标识符 ='GenericFunction'
name ='GenericFunction'
class sqlalchemy.sql.functions.OrderedSetAgg(*args, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

定义一个返回类型基于传递给FunctionElement.within_group()方法的表达式定义的排序表达式类型的函数。

array_for_multi_clause = False
标识符 ='OrderedSetAgg'
name ='OrderedSetAgg'
within_group_type T0> ( T1> within_group T2> ) T3> ¶ T4>
class sqlalchemy.sql.functions。 ReturnTypeFromArgs * args** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

定义一个返回类型与其参数相同的函数。

标识符 ='ReturnTypeFromArgs'
name ='ReturnTypeFromArgs'
class sqlalchemy.sql.functions.array_agg(*args, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

支持ARRAY_AGG功能。

func.array_agg(expr)结构返回types.ARRAY类型的表达式。

例如。:

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

版本1.1中的新功能

也可以看看

postgresql.array_agg() - PostgreSQL特定版本,它返回postgresql.ARRAY,其中添加了PG专用操作符。

标识符 ='array_agg'
name ='array_agg'
型 T0> ¶ T1>

ARRAY的别名

class sqlalchemy.sql.functions。 char_length arg* * kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

标识符 ='char_length'
name ='char_length'
型 T0> ¶ T1>

Integer的别名

class sqlalchemy.sql.functions.coalesce(*args, **kwargs)

基础:sqlalchemy.sql.functions.ReturnTypeFromArgs

标识符 ='coalesce'
姓名 ='coalesce'
class sqlalchemy.sql.functions.concat(*args, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

标识符 ='concat'
name ='concat'
型 T0> ¶ T1>

String的别名

class sqlalchemy.sql.functions.count(expression=None, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

ANSI COUNT聚合函数。没有参数,会发出COUNT *。

标识符 ='count'
name ='count'
型 T0> ¶ T1>

Integer的别名

class sqlalchemy.sql.functions。 cume_dist * args** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

实现cume_dist假设集合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

这个函数的返回类型是Numeric

版本1.1中的新功能

标识符 ='cume_dist'
姓名 ='cume_dist'
类型 =数字()
class sqlalchemy.sql.functions。 current_date ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='当前日期'
name ='current_date'
型 T0> ¶ T1>

Date的别名

class sqlalchemy.sql.functions。 current_time ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='current_time'
name ='current_time'
型 T0> ¶ T1>

Time的别名

class sqlalchemy.sql.functions。 current_timestamp ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='current_timestamp'
name ='current_timestamp'
型 T0> ¶ T1>

DateTime的别名

class sqlalchemy.sql.functions。 current_user ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='current_user'
name ='current_user'
型 T0> ¶ T1>

String的别名

class sqlalchemy.sql.functions。 dense_rank * args** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

实现dense_rank假设集合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

这个函数的返回类型是Integer

版本1.1中的新功能

标识符 ='dense_rank'
name ='dense_rank'
type = Integer()
class sqlalchemy.sql.functions。 localtime ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='localtime'
name ='localtime'
型 T0> ¶ T1>

DateTime的别名

class sqlalchemy.sql.functions。 localtimestamp ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='本地时间戳'
name ='localtimestamp'
型 T0> ¶ T1>

DateTime的别名

class sqlalchemy.sql.functions.max(*args, **kwargs)

基础:sqlalchemy.sql.functions.ReturnTypeFromArgs

标识符 ='max'
name ='max'
class sqlalchemy.sql.functions.min(*args, **kwargs)

基础:sqlalchemy.sql.functions.ReturnTypeFromArgs

identifier ='min'
姓名 ='分钟'
class sqlalchemy.sql.functions.mode(*args, **kwargs)

基础:sqlalchemy.sql.functions.OrderedSetAgg

实现mode有序集聚合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

该函数的返回类型与排序表达式相同。

版本1.1中的新功能

identifier ='mode'
name ='mode'
class sqlalchemy.sql.functions。 next_value seq* *千瓦 T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

Sequence作为其单个参数,表示'下一个值'。

编译为每个后端的相应函数,或者如果在不支持序列的后端上使用,则会引发NotImplementedError。

标识符 ='next_value'
name ='next_value'
type = Integer()
class sqlalchemy.sql.functions.now(*args, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

标识符 ='现在'
姓名 ='现在'
型 T0> ¶ T1>

DateTime的别名

class sqlalchemy.sql.functions。 percent_rank * args** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

实现percent_rank假设集合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

这个函数的返回类型是Numeric

版本1.1中的新功能

标识符 ='percent_rank'
name ='percent_rank'
类型 =数字()
class sqlalchemy.sql.functions.percentile_cont(*args, **kwargs)

基础:sqlalchemy.sql.functions.OrderedSetAgg

实现percentile_cont有序集合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

此函数的返回类型与排序表达式相同,或者如果参数是数组,则为排序表达式类型的types.ARRAY

版本1.1中的新功能

array_for_multi_clause = True
标识符 ='percentile_cont'
姓名 ='percentile_cont'
class sqlalchemy.sql.functions.percentile_disc(*args, **kwargs)

基础:sqlalchemy.sql.functions.OrderedSetAgg

实现percentile_disc有序集合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

此函数的返回类型与排序表达式相同,或者如果参数是数组,则为排序表达式类型的types.ARRAY

版本1.1中的新功能

array_for_multi_clause = True
标识符 ='percentile_disc'
name ='percentile_disc'
class sqlalchemy.sql.functions。 random * args** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

标识符 ='随机'
name ='随机'
class sqlalchemy.sql.functions.rank(*args, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

实现rank假设集合函数。

该函数必须与FunctionElement.within_group()修饰符一起使用,以提供一个排序表达式来进行操作。

这个函数的返回类型是Integer

版本1.1中的新功能

标识符 ='rank'
name ='rank'
type = Integer()
sqlalchemy.sql.functions.register_function(identifier, fn, package='_default')

将可调用函数与特定的函数关联。名称。

这通常由_GenericMeta调用,但也可以自行使用,以便非函数结构可以与func访问器关联(即,CAST,EXTRACT)。

class sqlalchemy.sql.functions。 session_user ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='session_user'
name ='session_user'
型 T0> ¶ T1>

String的别名

class sqlalchemy.sql.functions.sum(*args, **kwargs)

基础:sqlalchemy.sql.functions.ReturnTypeFromArgs

标识符 ='sum'
name ='sum'
class sqlalchemy.sql.functions。 sysdate ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='sysdate'
name ='sysdate'
型 T0> ¶ T1>

DateTime的别名

class sqlalchemy.sql.functions。 user ** kwargs ) T5> ¶ T6>

基础:sqlalchemy.sql.functions.AnsiFunction

标识符 ='user'
name ='user'
型 T0> ¶ T1>

String的别名