Python - SQLAlchemy 子查询

Python - SQLAlchemy 子查询

Max.Bai

2020-08

1. 子查询需要先执行subquery

2. 子查询的列需要通过c来访问  比如: sub_query.c.alarm

    base_sub_query = (
        db.query(
            AlarmRule.alarm,
            AlarmRule.condition,
            AlarmRule.compare_float
        )
        .filter(
            AlarmRule.alarm == Alarm.id,
            Alarm.module == MonitorModule.id,
            AlarmRule.is_valid == 1,
            AlarmRule.enable == 1,
        )
        .order_by(
            AlarmRule.alarm,
            AlarmRule.condition,
        )
        .having(1 == 1)
    )


    sub_query = (
        base_sub_query.filter(AlarmRule.condition == "LT")
        .order_by(AlarmRule.compare_float)
        .subquery()
    )

    query = db.query(sub_query).group_by(
        sub_query.c.alarm,
        sub_query.c.condition,
    )
    
    result = [d._asdict() for d in query.all()]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值