I'm not able to reproduce the issue you describe. Below is an MCVE, can you 
please modify it to show the failure you are getting? The .foo attribute on B 
is returned:

from sqlalchemy import Column
from sqlalchemy import create_engine
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.ext.declarative import AbstractConcreteBase
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import configure_mappers
from sqlalchemy.orm import query_expression
from sqlalchemy.orm import Session
from sqlalchemy.orm import with_expression


Base = declarative_base()


class A(AbstractConcreteBase, Base):
 @declared_attr
 def foo(cls):
 return query_expression()


class B(A):
 __tablename__ = "b"

 id = Column(Integer, primary_key=True)

 data = Column(String(50))

 __mapper_args__ = {"polymorphic_identity": "b"}


class C(A):
 __tablename__ = "c"

 id = Column(Integer, primary_key=True)
 __mapper_args__ = {"polymorphic_identity": "c"}


configure_mappers()

e = create_engine("sqlite://", echo=True)
Base.metadata.create_all(e)

session = Session(e)

session.add(B(id=1, data='b data'))
session.commit()

b1 = session.query(A).options(with_expression(A.foo, B.data + ' hi')).all()[0]
assert b1.foo == "b data hi"







On Wed, Mar 25, 2020, at 12:30 PM, Benjamin Beguin wrote:
> Hi there,
> 
> I'm facing an issue with the use of AbstractConcreteBase class and a 
> @declarred_attr returning a query_expression()
> 
> 
> class A(AbstractConcreteBase, Base):
> @declared_attr
> def foo(cls):
> return query_expression()
> 
> 
> class B(A):
> ...
> 
> 
> class C(A):
> ...
> 
> 
> objects = db.session.query(A).options(with_expression(A.foo, 
> my_expression)).all()
> 
> 
> 
> B and C objects returned have the property foo but it is None
> The generated SQL query returns a value for the expression but the mapping 
> seems to be not effective 
> 
> Am I doing something wrong ?
> 

> --
>  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/a071d191-73d1-4519-8625-068903b3950c%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/a071d191-73d1-4519-8625-068903b3950c%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/619ba3a9-b01b-4fe9-8774-002418feb8d0%40www.fastmail.com.

Reply via email to