与“where”claus的SQL炼金术关系

2024-09-28 17:03:00 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能建立这样的关系:

class Games(Base):
    publishers = relationship(GameCompany).where(GameCompany.role == 'publisher')
    developers = relationship(GameCompany).where(GameCompany.role == 'developer')

本质上,创建一个model属性,该属性执行连接并具有where子句。在

^{pr2}$

Tags: developerbasemodel属性关系wheregamespublisher
1条回答
网友
1楼 · 发布于 2024-09-28 17:03:00

这是绝对可能的。请阅读sqlalchemy文档的Specifying Alternate Join Conditions部分和示例代码。模型的代码可能如下所示:

class GameCompany(Base):
    id = Column(Integer, primary_key=True)
    company_id = Column(ForeignKey('games.id'))
    # ...

class Games(Base):
    __tablename__ = 'games'
    id = Column(Integer, primary_key=True)
    # ...
    publishers = relationship(GameCompany, 
        primaryjoin=and_(GameCompany.game_id == id, GameCompany.role == 'publisher'))
    developers = relationship(GameCompany, 
        primaryjoin=and_(GameCompany.game_id == id, GameCompany.role == 'developer'))

相关问题 更多 >