I have a few of these and generally use a variant of Simon's method where I wrap everything in a custom class. I stash all the requirements/options in the custom class instance, then invoke a `count()` or `paginated()` method that builds/stashes the core query and runs `count()` or `all()` on it.
class CustomQuery(): _core_query = None @property def core_query(self): if self._core_query is None: # simon's code self._core_query = XXX return self._core_query def count(self): return self.core_query.count() def paginated(self, offset=0, limit=None): return self.core_query.offset(offset).limit(limit). all() -- 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.