I have 3 classes, like so: class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True)
class Order(Base): __tablename__ = 'orders' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey(User.id)) user = relationship(User, backref=backref('orders')) #user = relationship(User, backref=backref('orders', lazy='subquery')) class Item(Base): __tablename__ = 'items' id = Column(Integer, primary_key=True) order_id = Column(Integer, ForeignKey(Order.id)) order = relationship(Order, backref=backref('items')) #order = relationship(Order, backref=backref('items', lazy='joined')) The commented out variations of the relationships are the working ones, which allow me to do results = session.query(User).all() and have it grab the users, then the join between the orders and items in a second subquery. I have been trying to reproduce this behavior using the per-entity default loading strategies described at http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html#per-entity-default-loading-strategies but have been unable to get the same behavior. This works: session.query(User).options( Load(User).subqueryload('orders').joinedload('items') ) But I am trying to build something programmatically, so I'm hoping to avoid the chaining. What I want to work, but does not, is this: session.query(User).options( Load(User).subqueryload('orders'), Load(Order).joinedload('items'), ) I'm trying to have each class able to return its own load strategy options, which i could then feed into options. Is it possible to use the Load(...) system to replicate the behavior of the lazy attribute provided to a relationship, as in, when the query is constructed, it behaves _exactly_ as if the value provided to Load(...) was actually set as the 'lazy' keyword of the attribute? I poked around in the source a bit, and with my failed attempt, JoinedLoader.__init__ is never even called. The subquery is issued, but is not joined against anything. I'm not sure how to make this work. -- 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.