可选择文件、表格、来自对象
术语“可选”是指可以从中选择行的任何对象;在SQLAlchemy中,这些对象从 FromClause
它们的特点是 FromClause.c
属性,它是FROM子句中包含的所有列的命名空间(这些元素本身 ColumnElement
子类)。
可选择的基础构造函数
顶层的“FROM子句”和“SELECT”构造函数。
Object Name | Description |
---|---|
except_(*selects, **kwargs) | 返回一 |
except_all(*selects, **kwargs) | 返回一 |
exists(*args, **kwargs) | 构建新的 |
intersect(*selects, **kwargs) | 返回一 |
intersect_all(*selects, **kwargs) | 返回一 |
select(*args, **kw) | 创建一个 |
table(name, *columns, **kw) | 产生新的 |
union(*selects, **kwargs) | 返回A |
union_all(*selects, **kwargs) | 返回A |
values(*columns, **kw) | 构建一个 |
- function sqlalchemy.sql.expression.except_(*selects, **kwargs)
这里列出的函数通常作为
FromClause
和Selectable
元素,例如alias()
函数通常通过FromClause.alias()
方法。Object Name Description 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 Name Description 表示表或可选别名(as)。
表、子查询和其他可选项别名的基类。
构成
UNION
,UNION ALL
,以及其他基于SELECT的set操作。表示公用表表达式。
马克A
ClauseElement
作为支持执行。代表
EXISTS
条款。表示可以在
FROM
A的子句SELECT
语句。可添加其他元素的select语句的基类。
声明类以包含CTE支持的mixin。
代表一个
JOIN
在两者之间构建FromClause
元素。表示横向子查询。
Core构造的最基本类,它具有一些可以表示行的列概念。
表示标量子查询。
表示
SELECT
语句。将类标记为可选择的。
select语句的基类。
表示select的子查询。
表示最小的“表”构造。
表示tablesample子句。
“表值”SQL函数的别名。
包装一个
TextClause
在一个SelectBase
接口。代表一个
VALUES
构造,它可以用作语句中的FROM元素。 - class sqlalchemy.sql.expression.Alias(*arg, **kw)
与一起使用的常量
GenerativeSelect.set_label_style()
方法。Object Name Description 默认标签样式,指的是
LABEL_STYLE_DISAMBIGUATE_ONLY
。标签样式,指示在生成SELECT语句的COLUMNS子句时,名称与现有名称冲突的列应该使用半匿名标签进行标记。
指示没有自动标签的标签样式应应用于SELECT语句的COLUMNS子句。
指示所有列的标签样式应标记为
<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 新版功能.
参见