You create an SQL query with a call to DBSession.query() , and this query is not executed until you call .all() on it.
You can save intermediate results and add additional filters or other suggestions if necessary:
search =DBSession.query( func.count(ExtendedCDR.uniqueid).label("CallCount"), func.sum(ExtendedCDR.duration).label("TotalSeconds"), ExtendedCDR,ExtensionMap) search = search.filter(or_( ExtensionMap.exten == ExtendedCDR.extension, ExtensionMap.prev_exten == ExtendedCDR.extension)) search = search.filter(between(ExtendedCDR.start, datebegin, dateend)) search = search.filter(ExtendedCDR.extension.in_(SelectedExtension)) search = search.group_by(ExtendedCDR.extension) search = search.order_by(func.count(ExtendedCDR.uniqueid).desc())
The value you pass to order_by can be created in advance:
search_order = func.count(ExtendedCDR.uniqueid).desc()
then used as:
search = search.order_by(search_order)
Once your request is complete, get the results by calling .all() :
SearchList = search.all()
source share