我如何order_by查询,以便所有具有等于true的列的行都首先开始?

时间:2019-04-06 03:47:38

标签: sqlalchemy flask-sqlalchemy

所以我有一个模型:

id = db.Column(db.Integer, primary_key=True) 
is_urgent = db.Column(db.Boolean, default=False)
creation_time = db.Column(db.DateTime, index=True, default=datetime.utcnow)

,我想通过查询创建一个有序列表,以便所有紧急订单都排在最前面,然后再处理所有紧急订单。而且这两个位置也是按创建时间排序的,因此查询列表的第一顺序将是最早的紧急顺序,而最新的将是不紧急的最新顺序

可以使用纯sqlalchemy完成吗?还是应该在更简单的查询后创建for循环?

1 个答案:

答案 0 :(得分:0)

查询结果可以通过在查询中使用order_by方法进行排序。这需要多个参数,并且您的查询将按每个参数依次排序。提供给desc的每一列上的order_by方法可用于控制排序的方向。以下应该适合您。

session.query(MyModel).order_by(MyModel.is_urgent.desc(), MyModel.creation_time)