Hi Mike - Thank you for your insights. Actually, this is part of upgrading Flask-SQLAlchemy library dependency to 1.4.0b3 and eventually 2.0. The snippet above is extracted from a test case that didn't pass against 1.4.0b3.
I've checked sqlalchemy.orm.with_parent <https://docs.sqlalchemy.org/en/14/orm/query.html?highlight=with_parent#sqlalchemy.orm.with_parent> (Python function, in Query API) documentation entry, however, it's not clear to me how with_parent construct can fit in the implementation instead of Query. I guess it would require a major change in how the library (Flask-SQLAlchemy) is currently designed as it functionally extends sqlalchemy.orm.Query and pass the extended class to relationship and other constructs as well. On Thursday, February 25, 2021 at 2:21:43 PM UTC-8 Mike Bayer wrote: > this will be fixed in https://github.com/sqlalchemy/sqlalchemy/issues/5981 > where I've reverted entirely some changes to AppenderQuery that made it > work more in 2.0 style. As Query is going to be present in 2.0, "dynamic" > relationships will remain also as legacy. They are superseded by explicit > use of the with_parent() filtering construct. > > > > On Thu, Feb 25, 2021, at 3:25 PM, Ahmed wrote: > > Hello, > > It seems that SQLAlchemy 1.4.0b3 ignores relationship() query_class > parameter. Here's the snippet that works with 1.3 but doesn't with 1.4: > > class Parent(db.Model): > __tablename__ = "todo" > id = db.Column(db.Integer, primary_key=True) > # ... Column mappings > children = db.relationship("Child", > backref="todo", query_class=DerivedQuery, lazy="dynamic") > > class Child(db.Model): > __tablename__ = "todo" > # ... Column mappings > parent_id = db.Column(db.Integer, db.ForeignKey("todo.id")) > > assert isinstance(p.children, DerivedQuery) > > In 1.4, children attribute is always an instance of AppenderQuery > regardless of the query_class value. I might have missed something above > though. > > > > -- > 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 view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy/4454277c-b3a1-484e-b0e5-aef3e72eeb01n%40googlegroups.com > > <https://groups.google.com/d/msgid/sqlalchemy/4454277c-b3a1-484e-b0e5-aef3e72eeb01n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- 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/087934f8-d7fb-4062-8b2a-9d623a2e7941n%40googlegroups.com.