Self-referential lazy="joined" requires the join_depth argument.   Check the 
docs.  

> On Mar 12, 2016, at 6:22 PM, Devin Jacobs <[email protected]> wrote:
> 
> from sqlalchemy import Column, and_
> from sqlalchemy import create_engine, Integer, String, Date, Enum
> from sqlalchemy.orm import sessionmaker, relationship, remote, foreign
> from sqlalchemy.ext.declarative import declarative_base
> from sqlalchemy.exc import DataError, IntegrityError
> 
> 
> Base = declarative_base()
> 
> 
> class Game(Base):
>     __tablename__ = 'game'
> 
>     team = Column(String, primary_key=True, index=True)
>     opponent = Column(String, primary_key=True, index=True)
>     date = Column(Date, primary_key=True, index=True)
>     result = Column(Enum('win', 'loss', name='win_loss'), index=True)
>     points = Column(Integer)
>     opp = relationship(
>         'Game',
>         uselist=False,
>         lazy='joined',
>         primaryjoin=and_(
>             foreign(team) == remote(opponent),
>             foreign(opponent) == remote(team),
>             foreign(date) == remote(date)))
> 
> 
> engine = create_engine('postgresql://buttons:buttons@localhost/ncaa', 
> echo=True)
> new_session = sessionmaker(engine)
> 
> 
> # The following line produces a query like: select * from game
> # The query does NOT contain a join.
> new_session().query(Game).all()
> 
> The query on the last line off the example produces a simple "select * from 
> game" type query (the columns are spelled out of course). I was expecting the 
> lazy='joined' argument to result in a join. What am I doing wrong?
> -- 
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to