版本: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'
name ='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()

New in version 0.8: GenericFunction now supports automatic registration of new functions as well as package and custom naming support.

在版本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)

基础: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-specific version that returns postgresql.ARRAY, which has PG-specific operators added.

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

ARRAY的别名

class sqlalchemy.sql.functions.char_length(arg, **kwargs)

基础:sqlalchemy.sql.functions.GenericFunction

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

Integer的别名

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

基础:sqlalchemy.sql.functions.ReturnTypeFromArgs

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

基础:sqlalchemy.sql.functions.GenericFunction

identifier ='concat'
name ='concat'
型 T0> ¶ T1>

String的别名

class sqlalchemy.sql.functions。 count expression = None ** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

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

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

Integer的别名

类 T0> sqlalchemy.sql.functions。 T1> CUME_DIST T2> ( T3> * ARGS T4>, ** kwargs T5> ) T6> ¶ T7>

基础:sqlalchemy.sql.functions.GenericFunction

实现cume_dist假设集合函数。

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

这个函数的返回类型是Numeric

版本1.1中的新功能

标识符 ='cume_dist'
name ='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

identifier ='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)

基础: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

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

基础:sqlalchemy.sql.functions.OrderedSetAgg

实现mode有序集合函数。

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

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

版本1.1中的新功能

标识符 ='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

标识符 ='现在'
name ='now'
型 T0> ¶ T1>

DateTime的别名

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

基础: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'
name ='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)

基础:sqlalchemy.sql.functions.GenericFunction

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

基础:sqlalchemy.sql.functions.GenericFunction

实现rank假设集合函数。

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

这个函数的返回类型是Integer

版本1.1中的新功能

identifier ='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)

基础: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)

基础: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的别名