如果你是存儲在一個這樣的信息數據庫我會建議另一種方法:
class SoccerPlayer(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
team_id = db.Column(db.Integer, db.ForeignKey('Team.id'))
stats = db.relationship("Stats", uselist=False, backref="player")
class Team(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
players = db.relationship("SoccerPlayer")
class Stats(db.Model):
id = db.Column(db.Integer, primary_key=True)
player_id = db.Column(db.Integer, db.ForeignKey('SoccerPlayer.id'))
goals_scored = db.Column(db.Integer)
assists = db.Column(db.Integer)
# Add more stats as you see fit
在這種模式下的設置,你可以做瘋狂的事情像這樣:
from sqlalchemy.sql import func
max_goals_by_team = db.session.query(Team.id,
func.max(Stats.goals_scored).label("goals_scored")
). \
join(SoccerPlayer, Stats). \
group_by(Team.id).subquery()
players = SoccerPlayer.query(Team.name.label("Team Name"),
SoccerPlayer.name.label("Player Name"),
max_goals_by_team.c.goals_scored). \
join(max_goals_by_team,
SoccerPlayer.team_id == max_goals_by_team.c.id,
SoccerPlayer.stats.goals_scored == max_goals_by_team.c.goals_scored).
join(Team)
從而使數據庫做拉出球員每隊的最高目標,而不是做這一切在Python的辛勤工作。
你在做什麼,你需要的數據結構是(理論上)'soccer_player.data [「name」],soccer_player.data [「goals_scored」]''而不是'soccer_player.name,soccer_player.goals_scored '? (知道這將有助於改善答案)。 –
我想比較一支球隊的SoccerPlayer(s)列表與其他球隊的SoccerPlayer(s) - 根據進球得分。每個球隊得分最高的球員將被輸出到網頁。 – JoseBazBaz
我只是覺得字典會很有用。之後我還計劃添加助攻,犯規等 - 所以我認爲如果沒有字典,它會變得太混亂。 – JoseBazBaz