所以我有一个模型:
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)
并且我想通过查询创建一个有序列表,以便所有紧急的订单首先出现,然后是所有不紧急的。并且这两个gropus也按创建时间排序,因此查询列表的第一个顺序将是最旧的紧急订单,最新的紧急订单将是最紧急的最新订单,
可以用纯粹的sqlalchemy来完成吗?或者我应该在更简单的查询后创建一个for循环?
可以在查询中使用order_by
方法对查询结果进行排序。这需要多个参数,您的查询将依次按每个参数进行排序。提供给desc
的每个列上的order_by
方法可用于控制排序的方向。以下内容适合您。
session.query(MyModel).order_by(MyModel.is_urgent.desc(), MyModel.creation_time)