On 4/29/15 5:16 AM, g wrote:
Hi all
I have a query  like that
from  sqlalchemy.orm  import  aliased

class  Part(Base):
     __tablename__  =  'part'
     part  =  Column(String,  primary_key=True)
     sub_part  =  Column(String,  primary_key=True)
     quantity  =  Column(Integer)

included_parts  =  session.query(
                 Part.sub_part,
                 Part.part,
                 Part.quantity).\
                     filter(Part.part=="our part").\
                     cte(name="included_parts",  recursive=True)

incl_alias  =  aliased(included_parts,  name="pr")
parts_alias  =  aliased(Part,  name="p")
included_parts  =  included_parts.union_all(
     session.query(
         parts_alias.sub_part,
         parts_alias.part,
         parts_alias.quantity).\
             filter(parts_alias.part==incl_alias.c.sub_part)
     )

q  =  session.query(
         included_parts.c.sub_part,
         func.sum(included_parts.c.quantity).
             label('total_quantity')
     ).\
     group_by(included_parts.c.sub_part)

in sqlalchemy 1.0 we do:

q.column_descriptions  to get the query columns

result is *AttributeError: 'CTE' object has no attribute 'entity'*

hello -

I cannot reproduce your error, either by calling upon q.column_descriptions or by actually invoking the query against a database, using either release 1.0.2 or current master.

Can you please:

1. provide a real stack trace?

2. run the sample below and confirm that it works, then modify it to show your error. thanks!


from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import aliased

Base = declarative_base()


class Part(Base):
    __tablename__ = 'part'
    part = Column(String, primary_key=True)
    sub_part = Column(String, primary_key=True)
    quantity = Column(Integer)

e = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
Base.metadata.create_all(e)

session = Session(e)

included_parts = session.query(
                Part.sub_part,
                Part.part,
                Part.quantity).\
                    filter(Part.part=="our part").\
                    cte(name="included_parts", recursive=True)

incl_alias = aliased(included_parts, name="pr")
parts_alias = aliased(Part, name="p")
included_parts = included_parts.union_all(
    session.query(
        parts_alias.sub_part,
        parts_alias.part,
        parts_alias.quantity).\
            filter(parts_alias.part==incl_alias.c.sub_part)
    )



q = session.query(
        included_parts.c.sub_part,
        func.sum(included_parts.c.quantity).
            label('total_quantity')
    ).\
    group_by(included_parts.c.sub_part)

q.all()

print q.column_descriptions





*
*
*Note:*
This  was working with release 0.9.9

Any idea how to fix it ?


Cheers g
--
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 <mailto:sqlalchemy+unsubscr...@googlegroups.com>. To post to this group, send email to sqlalchemy@googlegroups.com <mailto:sqlalchemy@googlegroups.com>.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to