2013-05-27 5 views
0

У меня есть простой запрос в PostGresSql, который мне нужно преобразовать в SQLAlchemy.Преобразование запроса PostGresSQL в 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

ответ

0

Я выяснял ответ. Я был на самом деле отсутствует состояние ON в запросе:.

session.query (table1.name , table2.ip , table2.info ) .distinct() внешнее соединение (table2, table1.name = table2.hostname ) .group_by (table1.name)

Спасибо за помощь!

0

Это не ясно из Вашего ответа, что проблема есть, но мой стрелять в этот запрос будет:

session.query(table1.name 
      ,table2.ip 
      ,table2.info)\ 
     .outerjoin(table2)\ 
     .group_by(table1.name) 
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) 
    
+0

Хотя это точно не отвечает на вопрос, я получил направление двигаться вперед. благодаря – Ishwar

Смежные вопросы