SQLAlchemy内部联接和最后记录

时间:2018-07-12 21:06:38

标签: python sqlite sqlalchemy flask-sqlalchemy

我真的很努力地尝试使用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)

0 个答案:

没有答案