我有一个查询,我连接多个具有相似列名的表。为了消除歧义,我想将表名后缀为列名,如:<CellGrid>
。每个表中有数百列,所以我想以编程方式进行。
有没有办法做某事?
<column_name>_<table_name>
答案 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将需要你做一些构建。我一直在我的应用程序中执行此操作。除了我不使用信息架构。我有一个表格,里面有我的列名。
这应该引导你朝着正确的方向前进。