我有两张桌子。第一个是比赛表,代表一个有两支球队的足球比赛。第二个是代表团队的团队表。 Team表中将有大约18个团队。匹配表中将有大约34场比赛。
我不想创建多对多连接,而是创建一个简单的连接:
Match.matchID --------------------> 1
Match.team1 ----------------------> Team.teamID
Match.team2 ----------------------> Team.teamID
Match.team1只能有一个teamID,Match.team2只能有一个teamID。我将如何在classicaly sqlalchemy中进行此操作?我目前在匹配表中有以下内容:
match_table = Table('match',metadata,
Column('matchID', Integer, primary_key=True),
Column('matchTeam1',Integer,ForeignKey('team.teamID')),
Column('matchTeam2',Integer,ForeignKey('team.teamID')),
以及Team表的以下内容:
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),
})
答案 0 :(得分:1)
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),
})