from decorator.singleton import singleton from db.db_conn import db_conn from db.models.tables import DustSiteInfo @singleton class SiteInfoRepository(object): """站点基本信息相关数据库操作""" def __init__(self) -> None: pass def save_site_info(self, info_list) -> bool: """保存站点基本信息""" def f(session): # 获取已有站点信息 site_list = session.query(DustSiteInfo).all() for i in info_list: # 更新已有站点 find = False for s in site_list: if i["ID"] == s.id: s.update(i) find = True break # 插入新站点 if not find: new_site_info = DustSiteInfo(i) session.add(new_site_info) session.commit() return db_conn.query_sql(f, new_session=True) def query_by_mncode(self, mn_code) -> DustSiteInfo: """根据mncode查询站点基本信息""" return db_conn.query_sql(lambda session: session.query(DustSiteInfo).filter_by(mn_code=mn_code).first())