riku
2024-01-10 a9e8e27e0503552b7b2a99c821da732175d4f071
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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())