Browse Source

bug修复

liweiquan 2 years ago
parent
commit
f67aa4e627
6 changed files with 58 additions and 10 deletions
  1. 1 1
      app/core/datasource/hive.py
  2. 27 0
      app/crud/data_table.py
  3. 19 0
      app/routers/job_jdbc_datasource.py
  4. 7 7
      data/data.sql
  5. 2 0
      environment.yml
  6. 2 2
      server.py

+ 1 - 1
app/core/datasource/hive.py

@@ -169,7 +169,7 @@ class HiveDS(DataSourceBase):
                 cursor.execute(sql)
         except Exception as e:
             logger.error(e)
-            raise Exception('hive 连接失败')
+            raise Exception('表创建失败,请检查字段填写是否有误')
         finally:
             if conn is not None:
                 conn.close()

+ 27 - 0
app/crud/data_table.py

@@ -26,6 +26,27 @@ def import_datalake(db: Session, item: schemas.ImportDataLake):
     db.refresh(data_table)
     return data_table
 
+def update_datalake(db: Session, datalake_id: int, item: schemas.ImportDataLake):
+    ailab_table_names = hiveDs.list_tables()
+    if not item.table_name in ailab_table_names: raise Exception(f'数据湖中不存在表{item.table_name}')
+    db_item: models.DataTable = db.query(models.DataTable).filter(models.DataTable.id == datalake_id).first()
+    if not db_item: raise Exception('未找到此数据')
+    db_item.database_name = item.database_name
+    db_item.table_name = item.table_name
+    db_item.table_path = item.table_path
+    db.commit()
+    db.flush()
+    db.refresh(db_item)
+    return db_item
+
+def delete_datalake(db: Session, datalake_id: int):
+    db_item: models.DataTable = db.query(models.DataTable).filter(models.DataTable.id == datalake_id).first()
+    if not db_item: raise Exception('未找到此数据')
+    db.delete(db_item)
+    db.commit()
+    return db_item
+
+
 def share_ailab(db: Session, item: schemas.ShareAilab):
     # 校验ailab中是否存在此表
     ailab_table_names = hiveDs.list_tables()
@@ -125,3 +146,9 @@ def get_lake_table(db: Session, project_id: int):
             .order_by(models.DataTable.create_time.desc()).all()
     return data_tables
 
+def get_lake_table_info(db: Session, dl_id: int):
+    data_table: models.DataTable = db.query(models.DataTable)\
+            .filter(models.DataTable.id==dl_id).first()
+    if not data_table: raise Exception('未找到该数据湖表')
+    return data_table
+

+ 19 - 0
app/routers/job_jdbc_datasource.py

@@ -83,6 +83,18 @@ def delete_job_jdbc_datasource(ds_id: int, db: Session = Depends(get_db)):
 def import_datalake(item: schemas.ImportDataLake, db: Session = Depends(get_db)):
     return crud.import_datalake(db, item)
 
+@router.put("/update_datalake/{dl_id}", dependencies=[Depends(verify_super_admin)])
+@web_try()
+@sxtimeit
+def update_datalake(dl_id: int,item: schemas.ImportDataLake, db: Session = Depends(get_db)):
+    return crud.update_datalake(db, dl_id, item)
+
+@router.delete("/delete_datalake/{dl_id}", dependencies=[Depends(verify_super_admin)])
+@web_try()
+@sxtimeit
+def delete_datalake(dl_id: int, db: Session = Depends(get_db)):
+    return crud.delete_datalake(db, dl_id)
+
 @router.post("/share_ailab", dependencies=[Depends(verify_special)])
 @web_try()
 @sxtimeit
@@ -120,6 +132,13 @@ def get_preview_ailab_table(table_name: str, db: Session = Depends(get_db)):
 def get_lake_table(project_id: int, db: Session = Depends(get_db)):
     return crud.get_lake_table(db, project_id)
 
+
+@router.get("/lake_table_info", dependencies=[Depends(verify_special)])
+@web_try()
+@sxtimeit
+def get_lake_table_info(dl_id: int, db: Session = Depends(get_db)):
+    return crud.get_lake_table_info(db, dl_id)
+
 @router.get("/lake_table_schema", dependencies=[Depends(verify_special)])
 @web_try()
 @sxtimeit

+ 7 - 7
data/data.sql

@@ -353,7 +353,7 @@ CREATE TABLE `project` (
   `create_time` int(20) NOT NULL COMMENT '创建时间',
   `project_token` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'project_token',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='项目';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目';
 
 
 -- ----------------------------
@@ -375,7 +375,7 @@ CREATE TABLE `users` (
   `create_time` int(20) NOT NULL COMMENT '创建时间',
   `user_token` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'user_token',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB COLLATE=utf8_unicode_ci COMMENT='项目用户';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目用户';
 
 -- ----------------------------
 -- Records of users
@@ -389,10 +389,10 @@ COMMIT;
 -- ----------------------------
 CREATE TABLE `roles` (
   `id` bigint(20) NOT NULL,
-  `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色名',
-  `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色编码',
+  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色名',
+  `code` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色编码',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色';
 
 -- ----------------------------
 -- Records of roles
@@ -414,7 +414,7 @@ CREATE TABLE `project_user_relation` (
   `project_id` bigint(20) NOT NULL COMMENT '项目id',
   `role_id` bigint(20) NOT NULL COMMENT '角色id',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='项目用户关系';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目用户关系';
 
 -- ----------------------------
 -- Records of project_user_relation
@@ -437,7 +437,7 @@ CREATE TABLE `data_table` (
   `create_time` bigint(13) NOT NULL COMMENT '创建时间',
   `user_id` bigint(20) NOT NULL COMMENT '创建人、分享人',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表';
 
 -- ----------------------------
 -- Alter for data_table

+ 2 - 0
environment.yml

@@ -43,5 +43,7 @@ dependencies:
       - apscheduler
       - werkzeug==0.16.0
       - itsdangerous==1.1.0
+      - python-jose[cryptography]
+      - passlib[bcrypt]
       - -i https://mirror.baidu.com/pypi/simple
 prefix: /opt/conda/envs/py38

+ 2 - 2
server.py

@@ -57,8 +57,8 @@ app.include_router(router_jm_job_info.router)
 app.include_router(router_jm_job_log.router)
 app.include_router(router_code_check.router)
 
-AirflowJobSubmitter.auto_submit_data_transfer()
-AirflowJobSubmitter.auto_submit_requirements_install()
+# AirflowJobSubmitter.auto_submit_data_transfer()
+# AirflowJobSubmitter.auto_submit_requirements_install()
 print('server init finish:)!!!')