Thanks, that does make more sense. I ended up writing a little wrapper that allows me to create the query in my service including the offset/limit and continue to add additional filters, etc. when it's run.
class PagedQuery: def __init__(self, query: orm.Query): self.logger: logging.Logger = logging.getLogger(self.__module__) self.query: orm.Query = query self._limit: int = None self._offset: int = None def __getattr__(self, item: Text): try: return self.__getattribute__(item) except AttributeError: def call(*args, **kwargs): self.query = getattr(self.query, item)(*args, **kwargs) return self return call def limit(self, limit: int): self._limit = limit return self def offset(self, offset: int): self._offset = offset return self def all(self): count = self.query.count() self.logger.debug(f"Paging results, count={count}, offset={self._offset}, limit={self._limit}") data = self.query \ .limit(self._limit) \ .offset(self._offset) \ .all() return { 'total_count': count, 'data': data } On Monday, April 1, 2019 at 11:10:52 AM UTC-5, Derek Lambert wrote: > > Is it possible to return a query's results as a dictionary containing the > total count and a limited portion of the results? > > query = session.query(Item) > > results = { > 'total_count': query.count(), > 'data': query.offset(0).limit(50).all(), > } > > > assert session.query(*magic_here*).*more_magic*().offset(0).limit(50).all() > == results > > I feel like I accidentally hit on something like this a while back, but > can't recall how or find any similar examples. > > Thanks, > Derek > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.