|
@@ -4,17 +4,106 @@ from flask import Blueprint, request, jsonify, g, current_app
|
|
|
from .model import predict
|
|
|
import pandas as pd
|
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
|
+from . import db # 从 app 包导入 db 实例
|
|
|
+from sqlalchemy.engine.reflection import Inspector
|
|
|
+from .database_models import Model, ModelParameters
|
|
|
|
|
|
# 创建蓝图 (Blueprint),用于分离路由
|
|
|
bp = Blueprint('routes', __name__)
|
|
|
|
|
|
-def get_db():
|
|
|
- db = getattr(g, '_database', None)
|
|
|
- if db is None:
|
|
|
- # database_url = current_app.config['DATABASE']
|
|
|
- # db = g._database = sqlite3.connect(database_url)
|
|
|
- db = SQLAlchemy(current_app)
|
|
|
- return db
|
|
|
+@bp.route('/tables', methods=['GET'])
|
|
|
+def list_tables():
|
|
|
+ engine = db.engine # 使用 db 实例的 engine
|
|
|
+ inspector = Inspector.from_engine(engine) # 创建 Inspector 对象
|
|
|
+ table_names = inspector.get_table_names() # 获取所有表名
|
|
|
+ return jsonify(table_names) # 以 JSON 形式返回表名列表
|
|
|
+
|
|
|
+@bp.route('/models/<int:model_id>', methods=['GET'])
|
|
|
+def get_model(model_id):
|
|
|
+ try:
|
|
|
+ model = Model.query.filter_by(ModelID=model_id).first()
|
|
|
+ if model:
|
|
|
+ return jsonify({
|
|
|
+ 'ModelID': model.ModelID,
|
|
|
+ 'ModelName': model.ModelName,
|
|
|
+ 'ModelType': model.ModelType,
|
|
|
+ 'CreatedAt': model.CreatedAt.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
+ 'Description': model.Description
|
|
|
+ })
|
|
|
+ else:
|
|
|
+ return jsonify({'message': 'Model not found'}), 404
|
|
|
+ except Exception as e:
|
|
|
+ return jsonify({'error': 'Internal server error', 'message': str(e)}), 500
|
|
|
+
|
|
|
+@bp.route('/models', methods=['GET'])
|
|
|
+def get_all_models():
|
|
|
+ try:
|
|
|
+ models = Model.query.all() # 获取所有模型数据
|
|
|
+ if models:
|
|
|
+ result = [
|
|
|
+ {
|
|
|
+ 'ModelID': model.ModelID,
|
|
|
+ 'ModelName': model.ModelName,
|
|
|
+ 'ModelType': model.ModelType,
|
|
|
+ 'CreatedAt': model.CreatedAt.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
+ 'Description': model.Description
|
|
|
+ }
|
|
|
+ for model in models
|
|
|
+ ]
|
|
|
+ return jsonify(result)
|
|
|
+ else:
|
|
|
+ return jsonify({'message': 'No models found'}), 404
|
|
|
+ except Exception as e:
|
|
|
+ return jsonify({'error': 'Internal server error', 'message': str(e)}), 500
|
|
|
+
|
|
|
+@bp.route('/model-parameters', methods=['GET'])
|
|
|
+def get_all_model_parameters():
|
|
|
+ try:
|
|
|
+ parameters = ModelParameters.query.all() # 获取所有参数数据
|
|
|
+ if parameters:
|
|
|
+ result = [
|
|
|
+ {
|
|
|
+ 'ParamID': param.ParamID,
|
|
|
+ 'ModelID': param.ModelID,
|
|
|
+ 'ParamName': param.ParamName,
|
|
|
+ 'ParamValue': param.ParamValue
|
|
|
+ }
|
|
|
+ for param in parameters
|
|
|
+ ]
|
|
|
+ return jsonify(result)
|
|
|
+ else:
|
|
|
+ return jsonify({'message': 'No parameters found'}), 404
|
|
|
+ except Exception as e:
|
|
|
+ return jsonify({'error': 'Internal server error', 'message': str(e)}), 500
|
|
|
+
|
|
|
+@bp.route('/models/<int:model_id>/parameters', methods=['GET'])
|
|
|
+def get_model_parameters(model_id):
|
|
|
+ try:
|
|
|
+ model = Model.query.filter_by(ModelID=model_id).first()
|
|
|
+ if model:
|
|
|
+ # 获取该模型的所有参数
|
|
|
+ parameters = [
|
|
|
+ {
|
|
|
+ 'ParamID': param.ParamID,
|
|
|
+ 'ParamName': param.ParamName,
|
|
|
+ 'ParamValue': param.ParamValue
|
|
|
+ }
|
|
|
+ for param in model.parameters
|
|
|
+ ]
|
|
|
+
|
|
|
+ # 返回模型参数信息
|
|
|
+ return jsonify({
|
|
|
+ 'ModelID': model.ModelID,
|
|
|
+ 'ModelName': model.ModelName,
|
|
|
+ 'ModelType': model.ModelType,
|
|
|
+ 'CreatedAt': model.CreatedAt.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
+ 'Description': model.Description,
|
|
|
+ 'Parameters': parameters
|
|
|
+ })
|
|
|
+ else:
|
|
|
+ return jsonify({'message': 'Model not found'}), 404
|
|
|
+ except Exception as e:
|
|
|
+ return jsonify({'error': 'Internal server error', 'message': str(e)}), 500
|
|
|
|
|
|
|
|
|
@bp.route('/predict', methods=['POST'])
|