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

Reply via email to