Python 按最流行的顺序订购产品(计数表并通过排序连接到另一个)-sqlalchemy

Python 按最流行的顺序订购产品(计数表并通过排序连接到另一个)-sqlalchemy,python,sql,flask,sqlalchemy,Python,Sql,Flask,Sqlalchemy,我在使用ORM sqlalchemy(烧瓶sqlalchemy)时遇到问题 我有这两个db模型 class Stock(db.Model): id = db.Column(db.Integer, primary_key=True) ref = db.Column(db.String(30), nullable=False) desc = db.Column(db.String(30), nullable=False) price = db.Column(db.Fl

我在使用ORM sqlalchemy(烧瓶sqlalchemy)时遇到问题

我有这两个db模型

class Stock(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ref = db.Column(db.String(30), nullable=False)
    desc = db.Column(db.String(30), nullable=False)
    price = db.Column(db.Float, nullable=False)
    stock = db.Column(db.Float, nullable=False)
    image = db.Column(db.String(30), nullable=True)
    sales = db.relationship("Sales", backref="product", lazy=True)

    def __repr__(self):
        return f"Stock(Id:'{self.id}', Text:'{self.ref}...')"


class Sales(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    price = db.Column(db.Float, nullable=False)
    date = db.Column(db.DateTime(), nullable=False, default=datetime.datetime.utcnow)
    pcs = db.Column(db.Integer, nullable=False)
    stock_id = db.Column(db.Integer, db.ForeignKey("stock.id"), nullable=False)

    def __repr__(self):
        return f"Sales(Id:'{self.id}', Text:'{self.pcs}...')"
我想通过用户输入来排列“Stock”表。这是我用下面的方法实现的

Stock.query.filter(Stock.desc.like(f"%{data['search']}%"))  
但我想组织这些结果,从“销售”表中购买该产品的销售数量

我相信这很容易。但我似乎无法应付

我试着按“销售”表中的产品对_进行分组,但没有成功

SQL如下所示,但我想使用ORM而不是纯SQL

select *
from Stock st
         join (select stock_id, count(*) as total_sales from Sales group by stock_id) sl
              on st.id = sl.stock_id
where st.desc like '%bread%'
order by total_sales
有人能帮忙吗