📜  SQLAlchemy核心-使用别名

📅  最后修改于: 2020-11-27 07:35:51             🧑  作者: Mango


SQL中的别名对应于表或SELECT语句的“重命名”版本,只要您说“ SELECT * FROM table1 AS a”,该别名就会出现。 AS为表创建一个新名称。别名允许使用唯一名称引用任何表或子查询。

对于表,这允许在FROM子句中多次命名同一个表。它为该语句表示的列提供了一个父名称,从而允许相对于该名称引用它们。

在SQLAlchemy中,可以使用From Clause.alias()方法将任何Table,select()构造或其他可选对象转换为别名,该方法将生成Alias构造。 sqlalchemy.sql模块中的alias()函数表示别名,通常使用AS关键字将其应用于SQL语句中的任何表或子选择。

from sqlalchemy.sql import alias
st = students.alias("a")

现在可以在select()构造中使用此别名来引用学生表-

s = select([st]).where(st.c.id>2)

这转换为SQL表达式如下-

SELECT a.id, a.name, a.lastname FROM students AS a WHERE a.id > 2

现在,我们可以使用连接对象的execute()方法执行此SQL查询。完整的代码如下-

from sqlalchemy.sql import alias, select
st = students.alias("a")
s = select([st]).where(st.c.id > 2)
conn.execute(s).fetchall()

当执行以上代码行时,它将生成以下输出-

[(3, 'Komal', 'Bhandari'), (4, 'Abdul', 'Sattar'), (5, 'Priya', 'Rajhans')]