Orm sqlalchemy-从一个表到另一个表的多个连接
我有两张桌子。第一个是比赛表,它代表一场两队的足球比赛。第二个是代表团队的团队表。团队表中大约有18个团队。比赛表中大约有34场比赛 与其创建多对多联接,我想做的是为以下对象创建一个简单联接: Match.matchID----------------->1 Match.team1----------------->Team.teamID Match.team2----------------->Team.teamID Match.team1只能有一个teamID,Match.team2只能有一个teamID。在古典炼金术中我该怎么做?我目前有以下匹配表:Orm sqlalchemy-从一个表到另一个表的多个连接,orm,mapping,sqlalchemy,Orm,Mapping,Sqlalchemy,我有两张桌子。第一个是比赛表,它代表一场两队的足球比赛。第二个是代表团队的团队表。团队表中大约有18个团队。比赛表中大约有34场比赛 与其创建多对多联接,我想做的是为以下对象创建一个简单联接: Match.matchID----------------->1 Match.team1----------------->Team.teamID Match.team2----------------->Team.teamID Match.team1只能有一个teamID,Match.team2只能有一
match_table = Table('match',metadata,
Column('matchID', Integer, primary_key=True),
Column('matchTeam1',Integer,ForeignKey('team.teamID')),
Column('matchTeam2',Integer,ForeignKey('team.teamID')),
对于团队表,请执行以下操作:
team_table = Table('team',metadata,
Column('teamID',Integer,primary_key=True),
Column('teamShortName',String),
我如何在这里创建映射?像下面这样的东西似乎不起作用-有不同的语法可以使用吗
mapper(Match,match_table,properties={
'team1':relationship(Team),
'team2':relationship(Team),
})
谢谢当我将team_table.teamID更改为team_table.c.teamID时,它起作用了
mapper(Match,match_table,properties={
'team1':relationship(Team, foreign_keys=[match_table.c.matchTeam1],
primaryjoin=match_table.c.matchTeam1==team_table.teamID),
'team2':relationship(Team, foreign_keys=[match_table.c.matchTeam2],
primaryjoin=match_table.c.matchTeam2==team_table.teamID),
})