
models.py 里这么定义的
class Var(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20)) time = db.Column(db.Integer) ...... 现在假设有这么几个数据
| id | name | time | | 1 | a | 1500016227 | | 2 | a | 1500016237 | | 3 | b | 1500016227 | | 4 | b | 1500016237 | | 5 | c | 1500016216 | | 6 | c | 1500016226 | 原来单独获得某一个 name 的最新几条,返回不同 name 就多次查询。
model = Var.query.filter_by(name).order_by(Var.time.desc()).limit(1).all() 现在需要同时获得几个 name 的最新几条,比如上面的数据中,同时获得 b 和 c 的最新一条数据,应该让其返回 id 为 4 和 6 两条。
试了 distinct 和 group_by,前面只能写成 db.session.query(Var.name).group_by(Var.name),这样还得再循环单独查询后添加到列表里去。请问有没有什么好的方法?
1 Stitch 2017 年 7 月 14 日 这样 model = Var.query.filter_by(Var.name.in_(list_of_name)).order_by(Var.time.desc()).all() 参考: https://stackoverflow.com/questions/29326297/sqlalchemy-filter-by-field-in-list-but-keep-original-order |