Thanks so much! I was interpreting the parenthesis as a subquery. Been
banging my head against the wall thinking this was SQLAlchemy nonsense for
quite a while and it was just a simple misundertstanding of syntax. Now,
I've got the information I should be able to fix this within the far
messier application code.
On Tuesday, November 3, 2020 at 8:57:18 AM UTC-3:30 Alex Collins wrote:
> Trying to configure a set of relationships to all be joined loaded and the
> particular relationship structure doesn’t seem to want to join. I have a
> one-to-many relationship where the many is the child in joined table
> inheritance. The foreign key to my source table is on the polymorphic child
> table. But, however I configure the relationship it does a subquery instead
> of a joined load on the parent class.
>
> Built a test application as a demonstration. What I want is to have the
> script below function the same way but, the query at the end outputs a
> joinedload for PolyParent instead of a subquery.
>
> from sqlalchemy import Column, ForeignKey, Integer, Text, create_engine
> from sqlalchemy.ext.declarative import declarative_base
> from sqlalchemy.orm import relationship, sessionmaker
>
> Base = declarative_base()
>
> class PolyParent(Base):
> __tablename__ = "poly_parent"
> id = Column(Integer, primary_key=True)
> type = Column(Text)
> __mapper_args__ = {"polymorphic_identity": "poly_parent",
> "polymorphic_on": type}
>
> class PolyChild(PolyParent):
> __tablename__ = "poly_child"
> id = Column(Integer, ForeignKey("poly_parent.id"), primary_key=True)
> parent_id = Column(Integer, ForeignKey("source.id"))
> __mapper_args__ = {"polymorphic_identity": "poly_child"}
>
> class Source(Base):
> __tablename__ = "source"
> id = Column(Integer, primary_key=True)
> children = relationship(PolyChild)
>
> engine = create_engine("sqlite://")
> session = sessionmaker(bind=engine)()
> Base.metadata.create_all(bind=engine)
>
> print(session.query(Source).join(Source.children))
>
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/sqlalchemy/dad45bfd-a764-4354-8b6c-fe5ce58db925n%40googlegroups.com.