def save_device(): """读取设备""" with open("./utils/devices.json") as file: rows = json.load(file) for r in rows: resp = map.googleToBaidu(r[2], r[1]) #print(resp) device = Device(sn=r[0], google_lng=r[2], google_lat=r[1], baidu_lng=resp["result"][0]["x"], baidu_lat=resp["result"][0]["y"]) db.session.add(device) db.session.commit()
def populate(self): # devices device1 = Device(device_id="1") device2 = Device(device_id="2") device3 = Device(device_id="3") device4 = Device(device_id="4") # GSM events event1 = GsmEvent(date=datetime.now() + timedelta(days=-2)) event2 = GsmEvent(date=datetime.now()) event3 = GsmEvent(date=datetime.now()) device1.events = [event1, event2] device2.events = [event3] device3.events = [] db.session.add(device1) db.session.add(device2) db.session.add(device3) db.session.add(device4) db.session.add(event1) db.session.add(event2) db.session.add(event3) db.session.commit()
def check_and_save(device_dict): device = device_dict print(device) # 获取数据库ID datacenter_name = device.get('datacneter_name') area_name = device.get('area_name') cabinet_sn = device.get('cabinet_sn') start_u = device.get('start_u') device_contract_order = device.get('device_contract_order') secure_contract_orders = device.get('secure_contract_orders') device['secure_contracts'] = [] passwords = device.get('passwords') pop_list = [ 'datacenter_name', 'area_name', 'cabinet_sn', 'start_u', 'device_contract_order', 'secure_contract_orders', 'passwords' ] if cabinet_sn: cabinet = Cabinet.query.filter_by(cabinet_sn=cabinet_sn).one_or_none() if not cabinet: print('找不到指定的机柜') raise Exception("找不到指定的机柜") if datacenter_name: datacenter = cabinet.room.building.datacenter if datacenter.datacenter_name != datacenter_name: print("+" * 100, "\n", datacenter.datacenter_name) print('指定机柜不在指定的数据中心内') raise Exception("指定机柜不在指定的数据中心内") else: device['datacenter_id'] = datacenter.id if start_u: start_u = cabinet.u_ids.filter_by(up=start_u).one_or_none() if not start_u: print('没有指定的起始U位') raise Exception('没有指定的起始U位') device['start_u_id'] = start_u.id else: if datacenter_name: datacenter = DataCenter.query.filter_by( datacenter_name=datacenter_name).one_or_none() print("*" * 100, "\n", datacenter.datacenter_name) if not datacenter: print('不存在指定的数据中心') raise Exception("不存在指定的数据中心") device['datacenter_id'] = datacenter.id if area_name: net_area = NetArea.query.filter_by( area_name=area_name).one_or_none() if not net_area: print('不存在指定的网络区域') raise Exception("不存在指定的网络区域") if device_contract_order: print(device_contract_order) contract = DeviceContract.query.filter_by( contract_order=device_contract_order).one_or_none() if not contract: print("不存在设备合同:%s" % device_contract_order) raise Exception("不存在设备合同:%s" % device_contract_order) device['device_contract_id'] = contract.id # 将所需要维保合同对象添加到字典中 for secure_order in secure_contract_orders: contract = ContractSecure.query.filter_by( contract_order=secure_order).one_or_none() if not contract: print("不存在设备合同:%s" % secure_order) raise Exception("不存在设备合同:%s" % secure_order) device['secure_contracts'].append(contract) # print(device) # 删除创建设备数据库对象不需要的字段 res_dict = {} for key in device.keys(): print('1', key) if key not in pop_list: print('2', key) res_dict[key] = device[key] print(res_dict) device_db = Device(**res_dict) db.session.add(device_db) # 创建密码表记录 for password in passwords: password['device'] = device_db passwd_db = DevicePasswd(**password) db.session.add(passwd_db)