如何在select查询中设置表别名

时间:2017-05-29 11:02:48

标签: python sql peewee

默认情况下,peewee会为表格分配t1t2等名称 我正在尝试在peewee中构建一些复杂的查询,所以我想对表名进行别名。

让我们假设一个简单的案例:我们有一个表<MyTable>,我怎么能得到像

这样的东西
select foo.id from MyTable as foo;

我尝试过设置alias,但它看起来像是一个类方法而且不起作用:

MyTableModel.select().from_(MyTableModel.alias(), SomeOtherTable)  # << won't work

我找到了AliasMap类,它被设置为alias_map_classQueryCompiler类变量的默认值。另外,alias中有QueryCompiler方法,但它用于other目的:

  

alias()方法用于创建自联接。

2 个答案:

答案 0 :(得分:0)

好的,不得不再深入研究documentation

class MyTable(Model):
    class Meta:
        table_alias = 'my_alias'

答案 1 :(得分:0)

car_model = Cars.as_entity().alias('car_type_query')
car_type_query = Cars.select(car_model.c.car_type_id)\
                .from_(car_model)\
                .where(car_model.c.id == car)