使用sqlalchemy的两个具有相同列的表的联合

时间:2015-02-24 23:14:17

标签: python sql sqlalchemy

我是sqlalchemy的新手,我想知道如何组合两个具有相同列的表。我正在做以下事情:

table1_and_table2 = sql.union_all(self.tables['table1'].alias("table1_subquery").select(),
self.tables['table2'].alias("table2_subquery").select())

我看到了这个错误:

  

OperationalError:(OperationalError)(1248,'每个派生表必须有自己的别名')

(请注意,self.tables['table1']会返回名为 table1 的sqlalchemy Table。)

有人可以指出错误或建议更好的方法来合并两个表中的行吗?

1 个答案:

答案 0 :(得分:0)

首先,您可以输出产生问题的SQL吗?您应该可以通过在echo=True声明中设置create_engine来完成此操作。

其次,这只是一种预感,请尝试重新安排子查询:

table1_and_table2 = sql.union_all(self.tables['table1'].select().alias("table1_subquery"),
    self.tables['table2'].select().alias("table2_subquery"))

如果我的预感是正确的,那就是创建别名,然后运行查询,结果查询结果会重新别名并发生冲突