python - flask-sqlalchemy max value of column -
lets have user model such
from flask import flask flask.ext.sqlalchemy import sqlalchemy app = flask(__name__) app.config['sqlalchemy_database_uri'] = 'sqlite:////tmp/test.db' db = sqlalchemy(app) class user(db.model): id = db.column(db.integer, primary_key=true) username = db.column(db.string(80), unique=true) email = db.column(db.string(120), unique=true) numlogins = db.column(db.integer) def __init__(self, username, email): self.username = username self.email = email def __repr__(self): return '<user %r>' % self.username
how query records user maximum logins?
you order numlogins , take first result, won't work if multiple people have same number. instead, find max number, find users number.
max_logins = db.session.query(db.func.max(user.numlogins)).scalar() users = db.session.query(user).filter(user.numlogins == max_logins).all()
you reduce 1 query.
sub = db.session.query(db.func.max(user.numlogins).label('ml')).subquery() users = db.session.query(user).join(sub, sub.c.ml == user.numlogins).all()
Comments
Post a Comment