延迟加载一对一的关系 - SqlAlchemy

时间:2016-05-24 17:04:53

标签: python orm sqlalchemy

我试图在SqlAlchemy中建立一对一的关系,其中必须在select查询中明确地获取相关模型。

以下是主要模型的示例。其他模型中没有任何关系代码,如Gene和MiRNA。

class MicroRnaGeneTarget(Base):
"""description of class"""

__tablename__ = 'micro_rna_gene_target'

micro_rna_id_symbol = Column('micro_rna_id_symbol', String(20), ForeignKey('micro_rna.id_symbol'), primary_key=True, nullable=False)
gene_id_entrez = Column('gene_id_entrez', Integer, ForeignKey('gene.id_entrez'), primary_key=True, nullable=False)

gene = relationship('Gene', lazy='joined')
micro_rna = relationship('MicroRna', lazy='joined')

def __repr__(self):
    return "<MicroRNAGeneTarget(micro_rna_id_symbol='%s', gene_id_entrez='%s')>" % \
        (self.micro_rna_id_symbol, gene_id_entrez)

我定义了两个模型之间的关系,因为他们加入了#39;。然后,我希望得到主模型而不是两个模型。

示例:

在这里,我想要mirna_gene_targets值

mirna_gene_targets = session.query(MicroRnaGeneTarget).filter(MicroRnaGeneTarget.micro_rna_id_symbol == 'hsa-let-7a-5p').first()

在这里,必须得到相关的模型值:

mirna_gene_targets2 = session.query(MicroRnaGeneTarget).options(lazyload(MicroRnaGeneTarget.gene)).filter(MicroRnaGeneTarget.micro_rna_id_symbol == 'hsa-let-7a-5p').first()

有谁知道如何解决这个问题?

非常感谢。

0 个答案:

没有答案