Tornado+SQLalchemy(六) SQLAlchemy查詢值形成二級聯動數據

目的: 形成二級聯動數據

#返回json形式的二級數據

{
    "code": 0,
    "msg": "success",
    "data": {
        "192.168.1.82": {
            "val": "192.168.1.82",
            "item": {
                "018201": {
                    "val": "018201"
                }
            }
        },
        "192.168.1.150": {
            "val": "192.168.1.150",
            "item": {
                "018201": {
                    "val": "018201"
                }
            }
        },
        "192.168.1.192": {
            "val": "192.168.1.192",
            "item": {
                "001601": {
                    "val": "001601"
                }
            }
        },
        "192.168.1.134": {
            "val": "192.168.1.134",
            "item": {
                "015001": {
                    "val": "015001"
                }
            }
        }
    }
}

過程: 思路:將值查詢出來後,拆分組裝

# get方法獲取數據 
   def get(self):

        #獲取前端的access_token
        access_token = self.get_argument('access_token')

        # 解密
        res_data = deal_decode_jwt(access_token, self.settings['secret_key'])

        if type(res_data) == dict:

            #查詢
            with session_maker() as session:
               door_data = session.query(BCler.CrName, 
                           BDr.DrName).filter(BDr.CIndex == 
                           BCler.CIndex).filter(
                           BDr.DAddress == 1).all()
            data = {}  # 存放二級形式的數據
            for d in door_data:
                
                 # 自拼接字典形式數據
                door_res = {d[0]: {'val': d[0], 'item': {d[1]: {'val': d[1]}}}}
                
                # update更新字典
                data.update(door_res)
                
             # 返回最終結果
            self.write({'code': 0, 'msg': 'success', 'data': data})

        else:
            #輸出錯誤信息
            self.write({'code': 0, 'msg': '獲取數據出錯', 'data': res_data})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章