SqlAlchemy 2.0 中文文档(三十六)(4)

简介: SqlAlchemy 2.0 中文文档(三十六)

SqlAlchemy 2.0 中文文档(三十六)(3)https://developer.aliyun.com/article/1562663


选定的“已知”函数

这些是一组常见 SQL 函数的GenericFunction实现,为每个函数自动设置了预期的返回类型。它们以与func命名空间的任何其他成员相同的方式调用:

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

请注意,任何func未知的名称都会按原样生成函数名称 - SQLAlchemy 对可以调用的 SQL 函数没有限制,不管对 SQLAlchemy 已知还是未知,内置还是用户定义。本节仅描述 SQLAlchemy 已知参数和返回类型的函数。

对象名称 描述
aggregate_strings 实现一个通用的字符串聚合函数。
array_agg 对 ARRAY_AGG 函数的支持。
char_length CHAR_LENGTH() SQL 函数。
coalesce
concat SQL CONCAT()函数,用于连接字符串。
count ANSI COUNT 聚合函数。没有参数时,发出 COUNT *。
cube 实现CUBE分组操作。
cume_dist 实现cume_dist假设集合聚合函数。
current_date CURRENT_DATE() SQL 函数。
current_time CURRENT_TIME() SQL 函数。
current_timestamp CURRENT_TIMESTAMP() SQL 函数。
current_user CURRENT_USER() SQL 函数。
dense_rank 实现dense_rank假设集合聚合函数。
grouping_sets 实现GROUPING SETS分组操作。
localtime localtime() SQL 函数。
localtimestamp localtimestamp() SQL 函数。
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 RANDOM() SQL 函数。
rank 实现rank假设集合聚合函数。
rollup 实现ROLLUP分组操作。
session_user SESSION_USER() SQL 函数。
sum SQL SUM()聚合函数。
sysdate SYSDATE() SQL 函数。
user USER() SQL 函数。
class sqlalchemy.sql.functions.aggregate_strings

实现一个通用的字符串聚合函数。

此函数将非空值连接成字符串,并用分隔符分隔值。

此函数根据每个后端编译为group_concat()string_agg()LISTAGG()等函数。

例如,使用分隔符‘.’的示例用法:

stmt = select(func.aggregate_strings(table.c.str_col, "."))

此函数的返回类型是String

类签名

sqlalchemy.sql.functions.aggregate_stringssqlalchemy.sql.functions.GenericFunction

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() - 返回ARRAY的 PostgreSQL 特定版本,其中添加了 PG 特定的运算符。

类签名

sqlalchemy.sql.functions.array_aggsqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.char_length

CHAR_LENGTH() SQL 函数。

类签名

sqlalchemy.sql.functions.char_lengthsqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.coalesce

类签名

sqlalchemy.sql.functions.coalescesqlalchemy.sql.functions.ReturnTypeFromArgs

class sqlalchemy.sql.functions.concat

SQL CONCAT()函数,用于连接字符串。

例如:

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

在 SQLAlchemy 中,字符串连接更常见地使用 Python 的+运算符与字符串数据类型一起使用,这将呈现特定于后端的连接运算符,例如:

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

类签名

sqlalchemy.sql.functions.concatsqlalchemy.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.countsqlalchemy.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.cubesqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.cume_dist

实现cume_dist假设集聚合函数。

此函数必须与FunctionElement.within_group()修饰符一起使用,以提供要操作的排序表达式。

此函数的返回类型为Numeric

类签名

sqlalchemy.sql.functions.cume_distsqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.current_date

CURRENT_DATE() SQL 函数。

类签名

sqlalchemy.sql.functions.current_datesqlalchemy.sql.functions.AnsiFunction

class sqlalchemy.sql.functions.current_time

CURRENT_TIME() SQL 函数。

类签名

sqlalchemy.sql.functions.current_timesqlalchemy.sql.functions.AnsiFunction

class sqlalchemy.sql.functions.current_timestamp

CURRENT_TIMESTAMP() SQL 函数。

类签名

sqlalchemy.sql.functions.current_timestampsqlalchemy.sql.functions.AnsiFunction

class sqlalchemy.sql.functions.current_user

CURRENT_USER() SQL 函数。

类签名

sqlalchemy.sql.functions.current_usersqlalchemy.sql.functions.AnsiFunction

class sqlalchemy.sql.functions.dense_rank

实现dense_rank假设集聚合函数。

此函数必须与FunctionElement.within_group()修饰符一起使用,以提供要操作的排序表达式。

此函数的返回类型为Integer

类签名

sqlalchemy.sql.functions.dense_ranksqlalchemy.sql.functions.GenericFunction

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 中的新增内容。

类签名

sqlalchemy.sql.functions.grouping_setssqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.localtime

localtime() SQL 函数。

类签名

sqlalchemy.sql.functions.localtimesqlalchemy.sql.functions.AnsiFunction

class sqlalchemy.sql.functions.localtimestamp

localtimestamp() SQL 函数。

类签名

sqlalchemy.sql.functions.localtimestampsqlalchemy.sql.functions.AnsiFunction

class sqlalchemy.sql.functions.max

SQL MAX() 聚合函数。

类签名

sqlalchemy.sql.functions.maxsqlalchemy.sql.functions.ReturnTypeFromArgs

class sqlalchemy.sql.functions.min

SQL MIN() 聚合函数。

类签名

sqlalchemy.sql.functions.minsqlalchemy.sql.functions.ReturnTypeFromArgs

class sqlalchemy.sql.functions.mode

实现 mode 排序集合聚合函数。

必须与 FunctionElement.within_group() 修改器一起使用,以提供要操作的排序表达式。

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

类签名

sqlalchemy.sql.functions.modesqlalchemy.sql.functions.OrderedSetAgg

class sqlalchemy.sql.functions.next_value

表示“下一个值”,给定 Sequence 作为其唯一参数。

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

类签名

sqlalchemy.sql.functions.next_valuesqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.now

SQL 的 now()日期时间函数。

SQLAlchemy 方言通常会以特定于后端的方式呈现此特定函数,例如将其呈现为CURRENT_TIMESTAMP

类签名

sqlalchemy.sql.functions.nowsqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.percent_rank

实现percent_rank假设集合聚合函数。

必须使用FunctionElement.within_group()修饰符来提供要操作的排序表达式。

这个函数的返回类型是Numeric

类签名

sqlalchemy.sql.functions.percent_ranksqlalchemy.sql.functions.GenericFunction

class sqlalchemy.sql.functions.percentile_cont

实现percentile_cont有序集合聚合函数。

必须使用FunctionElement.within_group()修饰符来提供要操作的排序表达式。

这个函数的返回类型与排序表达式相同,或者如果参数是一个数组,则返回排序表达式类型的ARRAY

类签名

sqlalchemy.sql.functions.percentile_contsqlalchemy.sql.functions.OrderedSetAgg

class sqlalchemy.sql.functions.percentile_disc

实现percentile_disc有序集合聚合函数。

必须使用FunctionElement.within_group()修饰符来提供要操作的排序表达式。

这个函数的返回类型与排序表达式相同,或者如果参数是一个数组,则返回排序表达式类型的ARRAY

类签名

sqlalchemy.sql.functions.percentile_discsqlalchemy.sql.functions.OrderedSetAgg

class sqlalchemy.sql.functions.random

RANDOM() SQL 函数。

类签名

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

SESSION_USER() SQL 函数。

类签名

sqlalchemy.sql.functions.session_user (sqlalchemy.sql.functions.AnsiFunction)

class sqlalchemy.sql.functions.sum

SQL 的 SUM()聚合函数。

类签名

sqlalchemy.sql.functions.sum (sqlalchemy.sql.functions.ReturnTypeFromArgs)

class sqlalchemy.sql.functions.sysdate

SYSDATE() SQL 函数。

类签名

sqlalchemy.sql.functions.sysdate (sqlalchemy.sql.functions.AnsiFunction)

class sqlalchemy.sql.functions.user

USER() SQL 函数。

类签名

sqlalchemy.sql.functions.user (sqlalchemy.sql.functions.AnsiFunction)

函数 API

SQL 函数的基本 API,提供了func命名空间以及可用于可扩展性的类。

对象名称 描述
AnsiFunction 定义以“ansi”格式编写的函数,不渲染括号。
Function 描述一个命名的 SQL 函数。
FunctionElement 面向 SQL 函数构建的基类。
GenericFunction 定义一个“通用”函数。
register_function(identifier, fn[, package]) 将可调用对象与特定的 func. 名称关联起来。
class sqlalchemy.sql.functions.AnsiFunction

在“ansi”格式中定义一个不渲染括号的函数。


SqlAlchemy 2.0 中文文档(三十六)(5)https://developer.aliyun.com/article/1562679

相关文章
|
4月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(三十八)(4)
SqlAlchemy 2.0 中文文档(三十八)
37 0
|
4月前
|
SQL 缓存 数据库
SqlAlchemy 2.0 中文文档(三十八)(5)
SqlAlchemy 2.0 中文文档(三十八)
37 0
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(三十五)(2)
SqlAlchemy 2.0 中文文档(三十五)
42 2
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(三十五)(4)
SqlAlchemy 2.0 中文文档(三十五)
39 1
|
4月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(三十五)(1)
SqlAlchemy 2.0 中文文档(三十五)
55 1
|
4月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(三十四)(5)
SqlAlchemy 2.0 中文文档(三十四)
39 0
|
4月前
|
SQL 存储 关系型数据库
SqlAlchemy 2.0 中文文档(三十四)(4)
SqlAlchemy 2.0 中文文档(三十四)
45 1
|
4月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(三十六)(1)
SqlAlchemy 2.0 中文文档(三十六)
21 0
|
4月前
|
SQL 关系型数据库 测试技术
SqlAlchemy 2.0 中文文档(三十六)(5)
SqlAlchemy 2.0 中文文档(三十六)
22 0
|
4月前
|
SQL 关系型数据库 测试技术
SqlAlchemy 2.0 中文文档(三十六)(3)
SqlAlchemy 2.0 中文文档(三十六)
21 0