2014-10-09 54 views
0

有兩個班,我都使用,我想查詢以下:查詢和繼承的類

  • 全部來自MyClass的與值項假設從BaseClass的等於1個
  • 所有條目這不從項目起源於MyClass的

僞類如下:

Base = declarative_base()          

class BaseClass(Base):           

    __tablename__ = 'base'          
    id = Column(Integer, primary_key=True)      
    value = Column(String(256), nullable=False)    
    type = Column(String(40))         

    __mapper_args__ = {          
     'polymorphic_identity': 'base',      
     'polymorphic_on': type         
     }              


class MyClass(BaseClass):          
    __tablename__ = 'mine'          

    id = Column(Integer, ForeignKey('qg.id'), nullable=False, 
     primary_key=True)          
    data = Column(Integer, nullable=False)      

    __mapper_args__ = {          
     'polymorphic_identity': 'mine'       
     }              

感謝您的任何提示(最好是sqlalchemy,mysql查詢也可以)。

回答

0

,幫助我解決辦法:

與MySQL

SELECT value FROM base LEFT JOIN mine ON mine.id = base.id WHERE base.type = 'base' OR mine.data = 1; 

或使用SQLAlchemy的

q = session.query(Base)      
q = q.outerjoin(Mine)       
q = q.filter(               
    or_(Base.type == 'Base',       
     Mine.id == 1))       
result = q.all()