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
。
- class
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
。
- 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
的别名