On Wed, May 30, 2018 at 3:17 PM, Derek Lambert <dlamb...@dereklambert.com> wrote: > That's what I do in most circumstances. In this case I'm building a more > complicated query and was hoping to do something like > > sess.query(Employee).filter( > or_( > and_(isclass(Manager), Manager.name.startswith('Jo')), > and_(isclass(Engineer), > Engineer.engineer_info.startswith('Design')), > ... > ... > ) > )
it's just "check the discriminator", easy enough > > instead of performing multiple queries. > > On Wednesday, May 30, 2018 at 12:50:40 PM UTC-5, Mike Bayer wrote: >> >> On Wed, May 30, 2018 at 12:39 PM, Derek Lambert >> <dlam...@dereklambert.com> wrote: >> > Outside of checking the discriminator value is it possible to filter a >> > query >> > by a class in an inheritance mapping? >> > >> > class Employee(Base): >> > __tablename__ = 'employee' >> > id = Column(Integer, primary_key=True) >> > name = Column(String(50)) >> > type = Column(String(20)) >> > >> > __mapper_args__ = { >> > 'polymorphic_on':type, >> > 'polymorphic_identity':'employee' >> > } >> > >> > class Manager(Employee): >> > manager_data = Column(String(50)) >> > >> > __mapper_args__ = { >> > 'polymorphic_identity':'manager' >> > } >> > >> > class Engineer(Employee): >> > engineer_info = Column(String(50)) >> > >> > __mapper_args__ = { >> > 'polymorphic_identity':'engineer' >> > } >> > >> > and then query something like: >> > >> > engineers = session.query(Employee).filter(isclass(Engineer)).all() >> >> I'm sure you know the easiest way is query for that class: >> >> sess.query(Engineer).all() >> >> >> short of that you can try changing the entitiy: >> >> sess.query(Employee).with_entities(Engineer).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+...@googlegroups.com. >> > To post to this group, send email to sqlal...@googlegroups.com. >> > Visit this group at https://groups.google.com/group/sqlalchemy. >> > For more options, visit https://groups.google.com/d/optout. > > -- > 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. -- 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.