美文网首页
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