def add_task_info(task: Task, task_id, admin_id): """ 添加新的打标任务的基础信息. (当前默认admin_id=1; 暂不考虑state,doc_type信息) 从前端接收json信息(暂定) json格式如下: { 'name':str, 'desc':str, 'label_sys_ids':[str] } """ sess = SessionLocal() # 插入task表: current_time_str = datetime.fromtimestamp(int(time.time())) db_task = Task_(id=task_id, name=task.name, desc=task.desc, admin_id=admin_id, create_time=current_time_str) # ?? sess.add(db_task) sess.commit() # 插入task_records表 for label_sys_id in task.label_sys_ids: db_task_record = TaskRecords_(task_id=int(task_id), label_sys_id=label_sys_id) sess.add(db_task_record) sess.commit() sess.close() return {'task_id': task_id}
def upload_to_db(df, task_id): """ df: 通过检查的dataframe task_id: task_id """ # 开始往数据库插入: sess = SessionLocal() num_uploaded_docs = len(df) num_success_docs = 0 for item in df.iterrows(): try: title = item[1]['title'] content = item[1]['content'] doc_id = int(my_snow.get_id()) db_doc = Document_(id=doc_id, task_id=task_id, title=title, content=content, state=0) #初次上传,state都为0 sess.add(db_doc) # sess.refresh(db_doc) num_success_docs += 1 except: sess.rollback() # 报错的话需要通过rollback来撤销当前session的操作 print(traceback.format_exc()) sess.commit() sess.close() return { "num_uploaded_docs": num_uploaded_docs, "num_success_docs": num_success_docs }
def add_label_sys(label_sys: LabelSys, admin_id: int): """ 添加新的分类体系. label_sys的json格式如下: { 'name':str, 'desc':str, 'multi':int, 'labels':[{'name':str,'desc':str,'keywords':str}, {'name':str,'desc':str,'keywords':str},...] } """ if check_label_sys_name(label_sys.name): return None sess = SessionLocal() label_sys_id = int(my_snow.get_id()) db_label_sys = LabelSys_(id=label_sys_id, name=label_sys.name, desc=label_sys.desc, multi=label_sys.multi, admin_id=admin_id) # (当前默认admin_id=1) sess.add(db_label_sys) sess.commit() sess.refresh(db_label_sys) label_id_list = [] for label in label_sys.labels: label_id = int(my_snow.get_id()) label_id_list.append(label_id) db_label = Label_(id=label_id, name=label.name, desc=label.desc, keywords=label.keywords, label_sys_id=label_sys_id) sess.add(db_label) sess.commit() sess.refresh(db_label) res = {'label_sys_id': label_sys_id, 'label_id_list': label_id_list} sess.close() return res