SQLAlchemy:输出列的后缀表名

时间:2016-11-29 21:33:42

标签: python sql sqlalchemy

我有一个查询,我连接多个具有相似列名的表。为了消除歧义,我想将表名后缀为列名,如:<CellGrid>。每个表中有数百列,所以我想以编程方式进行。

有没有办法做某事?

<column_name>_<table_name>

1 个答案:

答案 0 :(得分:0)

您想使用label关键字:

sa.select([
    table1.c.column_name.label('_1'),
    table2.c.column_name.label('_2')]).
select_from(table1.join(table2, table1.c.id == table2.c.id))

这将允许您从不同的表中使用相同的列名。

如果你有一张动态的表或大量的列,你最好的选择就是做这样的事情:

伪代码:

select * from information_schema.columns where table_name = 'my_table"

从查询中获取结果

return_columns = []
counter = 0
for r in results:
    counter += 1
    return_columns.append("`table_name`.`" + r.column_name + "` as col_{}".format(counter))

创建动态sql将需要你做一些构建。我一直在我的应用程序中执行此操作。除了我不使用信息架构。我有一个表格,里面有我的列名。

这应该引导你朝着正确的方向前进。