0

我在 PostgreSQL 中有一个简单的查询,我需要将其转换为 SQLAlchemy。

SELECT table1.name,table2.ip,table2.info 
FROM table1 LEFT OUTER JOIN table2 
ON(table1.name=table2.hostname) 
GROUP BY table1.name;

我尝试使用它但没有成功:

session.query(table1.name
              ,table2.ip
              ,table2.info).distinct().join(table2).group_by(table1.name)

有人可以帮我吗?

在此先感谢伊什瓦尔

4

3 回答 3

1

以下是使用 Expression API 的方法

http://docs.sqlalchemy.org/en/latest/core/expression_api.html

  1. 定义你的表,例如:

    table1 = table('table1',
        column('name', String())
    )
    
    table2 = table('table2',
        column('ip', String()),
        column('info', String()),
        column('hostname', String()),
    )
    
  2. 编写查询,例如:

    my_query = select([table1.c.name,
                       table2.c.ip,
                       table2.c.info]
               ).select_from(
                       table1.outerjoin(table2, table1.c.name == table2.c.hostname)
               ).group_by(table1.c.name)
    
  3. 执行您的查询,例如:

    db.execute(my_query)
    
于 2013-05-28T02:54:06.630 回答
0

我想出了答案。我实际上错过了查询中的 ON 条件:

session.query(table1.name ,table2.ip ,table2.info ).distinct().outerjoin(table2 , table1.name=table2.hostname ).group_by(table1.name)

感谢帮助!

于 2013-05-28T05:12:39.023 回答
0

从您的回答中不清楚问题是什么,但我对这个查询的看法是:

session.query(table1.name
             ,table2.ip
             ,table2.info)\
       .outerjoin(table2)\
       .group_by(table1.name)
于 2013-05-27T12:58:59.903 回答