美文网首页
sqlalchemy联合查询

sqlalchemy联合查询

作者: fly_tomato | 来源:发表于2019-12-30 16:35 被阅读0次

案例:

统计用户信息并可以按照用户订单数量进行排序。

一般情况下我们不会将用户订单数量单独保存,这种情况下,我们没法直接用order_by('订单数量')进行排序,因为订单数量要我们根据用户id等标识查询得出,此时就要用到联合查询。

这种情况用原生sql语句查询还是相对简单的,ORM查询的话要麻烦一点,容易出错。
示例:

子查询

    order_info = (
        db.session.query(Orders.userid,
                         func.count(Orders.id).label('order_count'))
        .filter(
           “查询条件”
        )
        .group_by(Orders.userid)
        .subquery()
    )

根据子查询条件进行排序

       user_info = (
            db.session.query(
                Users.userid,
                order_info.c.order_count
            )
            .outerjoin(
                order_info,
                Users.userid == order_info.c.userid
            )
            .filter(
                 "查询条件"
            )
            .order_by(asc(order_info.c.order_count))           # 订单数量升序,降序desc
            .limit(page_size)
            .offset((page - 1) * page_size)                    # 分页
            .all()
        )

这样就可以对用户信息按照订单数量进行排序,分页查询。

相关文章

网友评论

      本文标题:sqlalchemy联合查询

      本文链接:https://www.haomeiwen.com/subject/hydmoctx.html