可选择文件、表格、来自对象

优质
小牛编辑
133浏览
2023-12-01

术语“可选”是指可以从中选择行的任何对象;在SQLAlchemy中,这些对象从 FromClause 它们的特点是 FromClause.c 属性,它是FROM子句中包含的所有列的命名空间(这些元素本身 ColumnElement 子类)。

可选择的基础构造函数

顶层的“FROM子句”和“SELECT”构造函数。

Object NameDescription

except_(*selects, **kwargs)

返回一 EXCEPT 多个可选择的。

except_all(*selects, **kwargs)

返回一 EXCEPT ALL 多个可选择的。

exists(*args, **kwargs)

构建新的 Exists 构造。

intersect(*selects, **kwargs)

返回一 INTERSECT 多个可选择的。

intersect_all(*selects, **kwargs)

返回一 INTERSECT ALL 多个可选择的。

select(*args, **kw)

创建一个 Select 使用1.x或2.0构造函数样式。

table(name, *columns, **kw)

产生新的 TableClause .

union(*selects, **kwargs)

返回A UNION 多个可选择的。

union_all(*selects, **kwargs)

返回A UNION ALL 多个可选择的。

values(*columns, **kw)

构建一个 Values 构造。

function sqlalchemy.sql.expression.except_(*selects, **kwargs)

这里列出的函数通常作为 FromClauseSelectable 元素,例如 alias() 函数通常通过 FromClause.alias() 方法。

Object NameDescription

alias(selectable[, name, flat])

返回一 Alias 对象。

cte(selectable[, name, recursive])

返回一个新的 CTE 或公用表表达式实例。

join(left, right[, onclause, isouter, ...])

产生一个 Join 对象,给定两个 FromClause 表达。

lateral(selectable[, name])

返回A Lateral 对象。

outerjoin(left, right[, onclause, full])

返回一 OUTER JOIN 子句元素。

tablesample(selectable, sampling[, name, seed])

返回A TableSample 对象。

function sqlalchemy.sql.expression.alias(selectable, name=None, flat=False)

这里的类是使用中列出的构造函数生成的 可选择的基础构造函数可选修改器构造函数 .

Object NameDescription

Alias

表示表或可选别名(as)。

AliasedReturnsRows

表、子查询和其他可选项别名的基类。

CompoundSelect

构成 UNIONUNION ALL ,以及其他基于SELECT的set操作。

CTE

表示公用表表达式。

Executable

马克A ClauseElement 作为支持执行。

Exists

代表 EXISTS 条款。

FromClause

表示可以在 FROM A的子句 SELECT 语句。

GenerativeSelect

可添加其他元素的select语句的基类。

HasCTE

声明类以包含CTE支持的mixin。

HasPrefixes

HasSuffixes

Join

代表一个 JOIN 在两者之间构建 FromClause 元素。

Lateral

表示横向子查询。

ReturnsRows

Core构造的最基本类,它具有一些可以表示行的列概念。

ScalarSelect

表示标量子查询。

Select

表示 SELECT 语句。

Selectable

将类标记为可选择的。

SelectBase

select语句的基类。

Subquery

表示select的子查询。

TableClause

表示最小的“表”构造。

TableSample

表示tablesample子句。

TableValuedAlias

“表值”SQL函数的别名。

TextualSelect

包装一个 TextClause 在一个 SelectBase 接口。

Values

代表一个 VALUES 构造,它可以用作语句中的FROM元素。

class sqlalchemy.sql.expression.Alias(*arg, **kw)

与一起使用的常量 GenerativeSelect.set_label_style() 方法。

Object NameDescription

LABEL_STYLE_DEFAULT

默认标签样式,指的是 LABEL_STYLE_DISAMBIGUATE_ONLY

LABEL_STYLE_DISAMBIGUATE_ONLY

标签样式,指示在生成SELECT语句的COLUMNS子句时,名称与现有名称冲突的列应该使用半匿名标签进行标记。

LABEL_STYLE_NONE

指示没有自动标签的标签样式应应用于SELECT语句的COLUMNS子句。

LABEL_STYLE_TABLENAME_PLUS_COL

指示所有列的标签样式应标记为 <tablename>_<columnname> 在生成SELECT语句的COLUMNS子句时,消除从不同表、别名或子查询引用的同名列的歧义。

sqlalchemy.sql.expression.LABEL_STYLE_DISAMBIGUATE_ONLY = symbol('LABEL_STYLE_DISAMBIGUATE_ONLY')

标签样式,指示在生成SELECT语句的COLUMNS子句时,名称与现有名称冲突的列应该使用半匿名标签进行标记。

下面,除了名称的第二次出现之外,大多数列名都不受影响 columna ,它是使用标签来标记的 columna_1 以消除它与…的歧义 tablea.columna ::

>>> from sqlalchemy import table, column, select, true, LABEL_STYLE_DISAMBIGUATE_ONLY
>>> table1 = table("table1", column("columna"), column("columnb"))
>>> table2 = table("table2", column("columna"), column("columnc"))
>>> print(select(table1, table2).join(table2, true()).set_label_style(LABEL_STYLE_DISAMBIGUATE_ONLY))
SELECT table1.columna, table1.columnb, table2.columna AS columna_1, table2.columnc
FROM table1 JOIN table2 ON true

GenerativeSelect.set_label_style() 方法, LABEL_STYLE_DISAMBIGUATE_ONLY 是所有SELECT语句的默认标签样式 1.x style ORM查询。

1.4 新版功能.

sqlalchemy.sql.expression.LABEL_STYLE_NONE = symbol('LABEL_STYLE_NONE')

指示没有自动标签的标签样式应应用于SELECT语句的COLUMNS子句。

下面是名为 columna 都是按原样呈现的,这意味着该名称 columna 只能引用此名称在结果集中的第一个匹配项,以及语句是否用作子查询::

>>> from sqlalchemy import table, column, select, true, LABEL_STYLE_NONE
>>> table1 = table("table1", column("columna"), column("columnb"))
>>> table2 = table("table2", column("columna"), column("columnc"))
>>> print(select(table1, table2).join(table2, true()).set_label_style(LABEL_STYLE_NONE))
SELECT table1.columna, table1.columnb, table2.columna, table2.columnc
FROM table1 JOIN table2 ON true

Select.set_label_style() 方法。

1.4 新版功能.

sqlalchemy.sql.expression.LABEL_STYLE_TABLENAME_PLUS_COL = symbol('LABEL_STYLE_TABLENAME_PLUS_COL')

指示所有列的标签样式应标记为 <tablename>_<columnname> 在生成SELECT语句的COLUMNS子句时,消除从不同表、别名或子查询引用的同名列的歧义。

下面,所有列名都被赋予一个标签,以便两个同名的列 columna 已消除歧义,如下所示 table1_columna``table2_columna` ::

>>> from sqlalchemy import table, column, select, true, LABEL_STYLE_TABLENAME_PLUS_COL
>>> table1 = table("table1", column("columna"), column("columnb"))
>>> table2 = table("table2", column("columna"), column("columnc"))
>>> print(select(table1, table2).join(table2, true()).set_label_style(LABEL_STYLE_TABLENAME_PLUS_COL))
SELECT table1.columna AS table1_columna, table1.columnb AS table1_columnb, table2.columna AS table2_columna, table2.columnc AS table2_columnc
FROM table1 JOIN table2 ON true

GenerativeSelect.set_label_style() 方法。等同于遗留方法 Select.apply_labels()LABEL_STYLE_TABLENAME_PLUS_COL 是SQLAlChemy的遗留自动标签样式。 LABEL_STYLE_DISAMBIGUATE_ONLY 提供了一种干扰较小的方法来消除同名列表达式的歧义。

1.4 新版功能.

sqlalchemy.sql.expression.LABEL_STYLE_DEFAULT

默认标签样式,指的是 LABEL_STYLE_DISAMBIGUATE_ONLY

1.4 新版功能.

参见

Select.set_label_style()

Select.get_label_style()