query(A).join((A_alias, A.somea)).join((B, A.someb)) fails

Issue #1925 resolved
Mike Bayer repo owner created an issue
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

assoc_table = Table(
   "assoc", Base.metadata,
   Column("left_id", ForeignKey("a.id")),
   Column("right_id", ForeignKey("a.id"))
)

class A(Base):
    __tablename__ = 'a'
    id = Column(Integer, primary_key=True)
    a_id = Column(Integer, ForeignKey('a.id'))

    # fails
    some_a = relationship("A", remote_side=id)

    # also fails
#    some_a = relationship("A", 
#                primaryjoin=id ==
#                        assoc_table.c.left_id,
#                    secondary=assoc_table,
#                    secondaryjoin=assoc_table.c.right_id ==
#                               id
#                )
    some_b = relationship("B")

class B(Base):
    __tablename__ = 'b'
    id = Column(Integer, primary_key=True)
    a_id = Column(Integer, ForeignKey("a.id"))

sess = Session()
AliasedA = aliased(A)
q = sess.query(A)
q = q.join((AliasedA, A.some_a))
q = q.join((B, A.some_b))
print q

Comments (2)

  1. Log in to comment