我真的很努力地尝试使用flask_sqlalchemy为一个简单的任务找到正确的查询。
我有两个表:Players和Stats。在“玩家”中自然有一个球员列表,其中包含一些基本数据,例如姓名,位置,年龄,球队等。在“统计信息”表中,有每个球员的统计信息。每个玩家每天都会在统计表中获得新的统计记录。我需要进行查询,以从“玩家”表中返回所有玩家,并返回“状态”表中最近的玩家记录。
这是我得到的最近的东西:
db.session.query(Player, Stats).join(Stats)\
.order_by(Stats.id.desc())\
.limit(db.session.query(Player).count())
通过这种方式,我实际上可以得出所需的值,但是必须有更好的方法。我想让结果按Stats.points排序,但对于当前查询,结果按ID排序。
我希望我足够清楚。
数据库模型定义:
class Player(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
link = db.Column(db.String(80), unique=True)
pos = db.Column(db.String)
born = db.Column(db.Integer)
team = db.Column(db.String(3))
date_added = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
stats = db.relationship('Stats', backref='player', lazy=True)
class Stats(db.Model):
id = db.Column(db.Integer, primary_key=True)
games_played = db.Column(db.Integer)
goals = db.Column(db.Integer)
assists = db.Column(db.Integer)
points = db.Column(db.Integer)
plus_minus = db.Column(db.Integer)
pen_min = db.Column(db.Integer)
date_added = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=False)