SQLAlchemy已知的关于数据库特定渲染,返回类型和参数行为的SQL函数。通用函数与所有SQL函数一样,使用func
属性进行调用:
select([func.count()]).select_from(sometable)
请注意,任何不为func
所知的名称都会按原样生成函数名称 - 对SQLAlchemy,内置或用户定义的SQL函数可以调用,已知或未知的SQL函数没有限制。这里的部分只描述了那些SQLAlchemy已经知道使用什么参数和返回类型的函数。
SQL函数API,工厂和内置函数。
sqlalchemy.sql.functions。
AnsiFunction
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.GenericFunction
标识符
='AnsiFunction' ¶姓名
='AnsiFunction' ¶sqlalchemy.sql.functions.
Function
(name, *clauses, **kw)¶基础:sqlalchemy.sql.functions.FunctionElement
描述一个命名的SQL函数。
有关公共方法的描述,请参阅超类FunctionElement
。
sqlalchemy.sql.functions.
FunctionElement
(*clauses, **kwargs)¶基础:sqlalchemy.sql.expression.Executable
,sqlalchemy.sql.expression.ColumnElement
,sqlalchemy.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
传递给Connection
或Engine
的Connectable.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
传递给Connection
或Engine
的Connectable.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_cont
,rank
,dense_rank
等。
有关完整说明,请参见within_group()
。
版本1.1中的新功能
within_group_type T0> ( T1> within_group T2> ) T3> ¶ T4>
对于根据由WithinGroup
构造调用的WITHIN GROUP(ORDER BY)表达式中的条件定义其返回类型的类型。
默认返回None,在这种情况下使用函数的普通.type
。
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' ¶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>
sqlalchemy.sql.functions。
ReturnTypeFromArgs
( * args,** kwargs T5> ) T6> ¶ T7>基础:sqlalchemy.sql.functions.GenericFunction
定义一个返回类型与其参数相同的函数。
标识符
='ReturnTypeFromArgs' ¶name
='ReturnTypeFromArgs' ¶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
的别名
sqlalchemy.sql.functions。
char_length
( arg,* * kwargs T5> ) T6> ¶ T7>基础:sqlalchemy.sql.functions.GenericFunction
标识符
='char_length' ¶name
='char_length' ¶型 T0> ¶ T1>
Integer
的别名
sqlalchemy.sql.functions.
coalesce
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.ReturnTypeFromArgs
标识符
='coalesce' ¶姓名
='coalesce' ¶sqlalchemy.sql.functions.
concat
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.GenericFunction
标识符
='concat' ¶name
='concat' ¶型 T0> ¶ T1>
String
的别名
sqlalchemy.sql.functions.
count
(expression=None, **kwargs)¶基础:sqlalchemy.sql.functions.GenericFunction
ANSI COUNT聚合函数。没有参数,会发出COUNT *。
标识符
='count' ¶name
='count' ¶型 T0> ¶ T1>
Integer
的别名
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' ¶类型
=数字() ¶sqlalchemy.sql.functions。
current_date
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='当前日期' ¶name
='current_date' ¶型 T0> ¶ T1>
Date
的别名
sqlalchemy.sql.functions。
current_time
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='current_time' ¶name
='current_time' ¶型 T0> ¶ T1>
Time
的别名
sqlalchemy.sql.functions。
current_timestamp
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='current_timestamp' ¶name
='current_timestamp' ¶型 T0> ¶ T1>
DateTime
的别名
sqlalchemy.sql.functions。
current_user
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='current_user' ¶name
='current_user' ¶型 T0> ¶ T1>
String
的别名
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() ¶sqlalchemy.sql.functions。
localtime
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='localtime' ¶name
='localtime' ¶型 T0> ¶ T1>
DateTime
的别名
sqlalchemy.sql.functions。
localtimestamp
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='本地时间戳' ¶name
='localtimestamp' ¶型 T0> ¶ T1>
DateTime
的别名
sqlalchemy.sql.functions.
max
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.ReturnTypeFromArgs
标识符
='max' ¶name
='max' ¶sqlalchemy.sql.functions.
min
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.ReturnTypeFromArgs
identifier
='min' ¶姓名
='分钟' ¶sqlalchemy.sql.functions.
mode
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.OrderedSetAgg
实现mode
有序集聚合函数。
该函数必须与FunctionElement.within_group()
修饰符一起使用,以提供一个排序表达式来进行操作。
该函数的返回类型与排序表达式相同。
版本1.1中的新功能
identifier
='mode' ¶name
='mode' ¶sqlalchemy.sql.functions。
next_value
( seq,* *千瓦 T5> ) T6> ¶ T7>基础:sqlalchemy.sql.functions.GenericFunction
以Sequence
作为其单个参数,表示'下一个值'。
编译为每个后端的相应函数,或者如果在不支持序列的后端上使用,则会引发NotImplementedError。
标识符
='next_value' ¶name
='next_value' ¶type
= Integer() ¶sqlalchemy.sql.functions.
now
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.GenericFunction
标识符
='现在' ¶姓名
='现在' ¶型 T0> ¶ T1>
DateTime
的别名
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' ¶类型
=数字() ¶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' ¶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' ¶sqlalchemy.sql.functions。
random
( * args,** kwargs T5> ) T6> ¶ T7>基础:sqlalchemy.sql.functions.GenericFunction
标识符
='随机' ¶name
='随机' ¶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)。
sqlalchemy.sql.functions。
session_user
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='session_user' ¶name
='session_user' ¶型 T0> ¶ T1>
String
的别名
sqlalchemy.sql.functions.
sum
(*args, **kwargs)¶基础:sqlalchemy.sql.functions.ReturnTypeFromArgs
标识符
='sum' ¶name
='sum' ¶sqlalchemy.sql.functions。
sysdate
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='sysdate' ¶name
='sysdate' ¶型 T0> ¶ T1>
DateTime
的别名
sqlalchemy.sql.functions。
user
( ** kwargs ) T5> ¶ T6>基础:sqlalchemy.sql.functions.AnsiFunction
标识符
='user' ¶name
='user' ¶型 T0> ¶ T1>
String
的别名