""" 给定一个cabinet的ID信息, 这里会删除数据库中该柜体关联的所有信息 """ import sys from tortoise.transactions import in_transaction from models import * async def clear_one_cabinet(conn, cabinet_id): # hikvision(请先确保hikvision中camera_type, username, password字段添加) try: hikvisions = await Hikvision.filter(cabinet_id=cabinet_id).all() for hikvision in hikvisions: await hikvision.delete() except: pass # logs logs = await Log.filter(cabinet_id=cabinet_id).all() for _log in logs: await _log.delete(using_db=conn) # environment_logs logs = await EnvironmentLogs.filter(cabinet_id=cabinet_id).all() for _log in logs: await _log.delete(using_db=conn) # drug_use_logs logs = await DrugUseLog.filter(cabinet_id=cabinet_id).all() for _log in logs: await _log.delete(using_db=conn) # drugs drugs = await Drug.filter(cabinet_id=cabinet_id).all() for _log in drugs: await _log.delete(using_db=conn) # drawer_boards drawer_boards = await DrawerBoard.filter(cabinet_id=cabinet_id).all() for _log in drawer_boards: await _log.delete(using_db=conn) drawers = await Drawer.filter(cabinet_id=cabinet_id).all() for _log in drawers: await _log.delete(using_db=conn) # cabinet cabinet = await Cabinet.get_or_none(id=cabinet_id) if cabinet: await cabinet.delete(using_db=conn) async def clear_cabinet(cabinet_id, terminal_id=None): """清理某个柜体指定的所有信息""" async with in_transaction('default') as conn: if terminal_id: terminal = await Terminal.get_or_none(id=terminal_id) if not terminal: print("--闯入的terminal_id在数据库中不存在, 请检查") sys.exit(-1) cabinets = await Cabinet.filter(terminal_id=terminal.id).all() for _cabinet in cabinets: await clear_one_cabinet(conn, _cabinet.id) await terminal.delete(using_db=conn) else: await clear_one_cabinet(conn, cabinet_id)