to accomplish this you would need to rewrite the orm.util.polymorphic_union 
function to include these additional expressions within each SELECT under a 
common label name, then override the part of AbstractConcreteBase which applies 
the polymorphic_union in order to accomplish this.

These two functions could be enhanced to support additional expressions added 
to the polymorphic_union however that's not available right now.

Otherwise, you need to select from TableA and TableB explicitly and write the 
UNION directly.

if this in fact a "toy" example then I would say you're better off not using 
concrete inheritance as it is not very fluent.




On Tue, Jan 7, 2020, at 1:38 PM, Damian Yurzola wrote:
> Folks I have this toy example I've sanitized.
> 
> class TableBase(AbstractConcreteBase, Base):
>  pass
> 
> 
> class TableA(TableBase):
>  __tablename__ = "table_a"
>  __mapper_args__ = {
>  "polymorphic_identity": "A",
>  "concrete": True,
>  }
> 
>  v0 = Column(Integer)
> 
>  @hybrid_property
>  def magic(self):
>  return self.v0 * 100
> 
>  @magic.expression
>  def magic(cls):
>  return cls.v0 * 100
> 
> 
> class TableB(TableBase):
>  __tablename__ = "table_b"
>  __mapper_args__ = {
>  "polymorphic_identity": "B",
>  "concrete": True,
>  }
>  v0 = Column(Integer)
> 
>  @hybrid_property
>  def magic(self):
>  return self.v0 * 10
> 
>  @magic.expression
>  def magic(cls):
>  return cls.v0 * 10
> 
> 
> When I query at the top level:
> 
> print(Query([TableBase.magic]).limit(1).statement) 
> 
> I get
> 
> AttributeError: type object 'TableBase' has no attribute 'magic'
> 
> 
> I've tried a bunch of things, most of them point to the fact that the 
> hybrid_property is not being rendered in the subquery.
> I did solve it by moving the hybrid_property into the abstract class, though 
> I want the particularities of a table to stay with the table definition and 
> not at the union level.
> 
> Thoughts? Ideas?
> 
> Thanks!!!
> 
> --Damian
> 
> 

> --
>  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/fee90588-8431-4e51-9f3a-39af6544bde1%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/fee90588-8431-4e51-9f3a-39af6544bde1%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/c361ae24-eea5-4b08-9d39-19177d1bcc8b%40www.fastmail.com.

Reply via email to