[Sqlalchemy-tickets] [sqlalchemy] #2847: interpret a Query in Query as aliased(ent, q.subquery()) ?
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-10-18 16:34:06
|
#2847: interpret a Query in Query as aliased(ent, q.subquery()) ?
-------------------------+------------------------------------
Reporter: zzzeek | Owner: zzzeek
Type: enhancement | Status: new
Priority: medium | Milestone: 0.9.0
Component: orm | Severity: major - 1-3 hours
Keywords: | Progress State: in queue
-------------------------+------------------------------------
Basically, if you were to say
sess.query(some_query).join(some_other_query) it would act like this:
{{{
#!python
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class A(Base):
__tablename__ = 'a'
id = Column(Integer, primary_key=True)
bs = relationship("B")
class B(Base):
__tablename__ = 'b'
id = Column(Integer, primary_key=True)
a_id = Column(Integer, ForeignKey('a.id'))
e = create_engine("sqlite://", echo=True)
Base.metadata.create_all(e)
sess = Session(e)
sess.add_all([A(bs=[B(), B()]), A(bs=[B()])])
def foo_thing(q):
ent = q.column_descriptions[0]['expr']
return aliased(ent, q.subquery())
q1 = sess.query(A)
q2 = sess.query(B)
print sess.query(foo_thing(q1)).join(foo_thing(q2)).all()
}}}
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2847>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|