在游戏中有两个简单的实体 Player 和 Alliance,我需要使用联盟名称获取同一国家的所有用户(如果他们在任何联盟中获取名称,否则联盟名称为空)。
class Base(object):
def __tablename__(self):
return self.__name__.lower()
id = Column(Integer, primary_key=True, nullable=False)
class PlayerModel(Base):
__tablename__ = 'players'
alliances_id = Column(Integer, nullable=True)
username = Column(String(30), nullable=False)
nation = Column(String(20), nullable=False)
score = Column(String(20), default=0)
class AllianceModel(Base):
__tablename__ = 'alliances'
name = Column(String(50), nullable=False)
nation = Column(String(20), nullable=False)
//query
for player in session.query(PlayerModel).filter(PlayerModel.nation.like(nation)):
alliance =session.query(AllianceModel).filter(AllianceModel.id==player.alliance_id).first()
result.append({'username':player.username, 'alliance':alliance.name})
我可以将其仅连接到一个查询吗?(我知道当有外键时使用 join,但玩家可以不在任何联盟中,alions_id 可以为空)。