将PostgreSQL转换为SqlAlchemy查询

时间:2013-05-27 12:06:15

标签: sql postgresql sqlalchemy flask-sqlalchemy

我在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)

有人可以帮帮我吗?

提前致谢 Ishwar

3 个答案:

答案 0 :(得分: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)
    

答案 1 :(得分:0)

从你的回答中不清楚问题是什么,但我在这个问题上的搜索是:

session.query(table1.name
             ,table2.ip
             ,table2.info)\
       .outerjoin(table2)\
       .group_by(table1.name)

答案 2 :(得分:0)

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

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

感谢您的帮助!