0
我是相當新的使用SQLAlchemy的和有一些問題產生,我尋找的SQL代碼。SQLAlchemy的:選擇列指的是一個別名錶名
最後,我想用下面的SQL查詢的加入表2到表1兩個不同的子集:
SELECT table1.date, a1.id AS name1_id, a2.id AS name2_id
FROM table1
LEFT JOIN table2 as a1
ON table1.name1 = table2.label AND table2.lookup_id = 1000
LEFT JOIN table2 as a2
ON table1.name2 = table2.label AND table2.lookup_id = 2000
這裏是我迄今使用的SQLAlchemy:
q_generate = (
select([table1.c.date,
a1.id.label('name1_id'),
a2.id.label('name2_id')])
.select_from(table1
.outerjoin(table2.alias(name='a1'),
and_(
table2.c.lookup_id == 1000,
table1.c.name1 == table2.c.label
))
.outerjoin(table2.alias(name='a2'),
and_(
table2.c.lookup_id == 2000,
table1.c.name2== table2.c.label
))
)
)
它產生以下錯誤:
*NameError: name 'a1' is not defined*
有一種特殊的方式,別名表名必須引用?我在這裏錯過了什麼?我認爲錯誤有事情做與這些線,但我無法弄清楚究竟是如何得到這個工作:
...
a1.id.label('name1_id'),
a2.id.label('name2_id')])
...
謝謝!