2015-04-14 2 views
0

Привет Я пытаюсь перевести следующий относительно простой запрос к SQLAlchemy, но я получаюSQL запросов Перевод на SQLAlchemy

('Unexpected error:', <class 'sqlalchemy.exc.InvalidRequestError'>) 

SELECT model, COUNT(model) AS count FROM log.logs 
WHERE SOURCE = "WEB" AND year(timestamp) = 2015 AND month(timestamp) = 1 
and account = "Test" and brand = "Nokia" GROUP BY model ORDER BY count DESC limit 10 

Это то, что я написал, но он не работает. Что не так ?

devices = db.session.query(Logs.model).filter_by(source=source).filter_by(account=acc).filter_by(brand=brand).\ 
      filter_by(year=year).filter_by(month=month).group_by(Logs.model).order_by(Logs.model.count().desc()).all() 
+0

является правилом 'count()' здесь? 'Logs.model.count(). Desc()' должен ли он упорядочиваться столбцом 'count'? – dm03514

ответ

1

Это немного трудно сказать, от вашего образца кода, но следующее, надеюсь, правильный код SQLAlchemy. Попробуйте:

from sqlalchemy.sql import func 

devices = (db.session 
      .query(Logs.model, func.count(Logs.model).label('count')) 
      .filter(source=source) 
      .filter_by(account=acc) 
      .filter_by(brand=brand) 
      .filter_by(year=year) 
      .filter_by(month=month) 
      .group_by(Logs.model) 
      .order_by(func.count(Logs.model).desc()).all()) 

Обратите внимание, что я заключен запрос в (...), чтобы избежать необходимости использовать \ в конце каждой строки.

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