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.

Reply via email to