2014-10-09 59 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()