import uuid from datetime import datetime from sqlalchemy.orm import sessionmaker, scoped_session from db.models import engine, TProject, TDevice, TDataStream, TDevStream from hashlib import md5 # 创建一个会话工厂 session_factory = sessionmaker(bind=engine) # 创建一个会话对象 Session = scoped_session(session_factory) session = Session() def get_pk(): n = uuid.uuid4().hex pk = md5(n.encode('utf-8')).hexdigest() return pk def create_project(sat_id, sat_name, proj_code, proj_name, desc, date_time, ) -> TProject: """ 创建project :param sat_id: :param sat_name: :param proj_code: :param proj_name: :param desc: :param date_time: :return: 创建完成的project """ project = TProject(C_PROJECT_PK=get_pk(), C_SAT_ID=sat_id, C_SAT_NAME=sat_name, C_PROJECT_CODE=proj_code, C_DESCRIPTION=desc, C_HASH=uuid.uuid4().int & 0xffffffff, C_PROJECT_NAME=proj_name, C_DATETIME=date_time, C_CREATEOR='') session.add(project) session.commit() return project def create_device(device_id, device_name, device_type, dll, project_pk): """ 创建device :param device_id: :param device_name: :param device_type: :param dll: :param project_pk: :return: """ device = TDevice(C_DEV_PK=get_pk(), C_DEV_ID=device_id, C_DEV_NAME=device_name, C_DEV_TYPE=device_type, C_DLL=dll, C_PROJECT_PK=project_pk) session.add(device) session.commit() return device def create_data_stream(proj_pk, dev_pk, name, code, data_ty, direct, rule_id, rule_ty): """ 创建data_stream :param proj_pk: :param dev_pk: :param name: :param code: :param data_ty: :param direct: :param rule_id: :param rule_ty: :return: """ ds = TDataStream(C_STREAM_PK=get_pk(), C_PROJECT_PK=proj_pk, C_STREAM_ID=code, C_DATA_TYPE=data_ty, C_STREAM_DIR=direct, C_NAME=name, C_DESCRIPTION='', C_RULE_ID=rule_id, C_RULE_TYPE=rule_ty) session.add(ds) link = TDevStream(C_PK=get_pk(), C_DEV_PK=dev_pk, C_STREAM_PK=ds.C_STREAM_PK, C_PROJECT_PK=proj_pk) session.add(link) session.commit() return ds