|
@@ -1,41 +1,36 @@
|
|
|
import sqlite3
|
|
|
|
|
|
-from flask import Blueprint, request, jsonify, g
|
|
|
+from flask import Blueprint, request, jsonify, g, current_app
|
|
|
from .model import predict
|
|
|
import pandas as pd
|
|
|
-
|
|
|
+from flask_sqlalchemy import SQLAlchemy
|
|
|
|
|
|
# 创建蓝图 (Blueprint),用于分离路由
|
|
|
bp = Blueprint('routes', __name__)
|
|
|
-DATABASE = 'SoilAcidification.db'
|
|
|
-
|
|
|
|
|
|
def get_db():
|
|
|
db = getattr(g, '_database', None)
|
|
|
if db is None:
|
|
|
- db = g._database = sqlite3.connect(DATABASE)
|
|
|
+ # database_url = current_app.config['DATABASE']
|
|
|
+ # db = g._database = sqlite3.connect(database_url)
|
|
|
+ db = SQLAlchemy(current_app)
|
|
|
return db
|
|
|
|
|
|
|
|
|
-# 路由:预测
|
|
|
@bp.route('/predict', methods=['POST'])
|
|
|
def predict_route():
|
|
|
try:
|
|
|
- # 从请求中获取数据
|
|
|
data = request.get_json()
|
|
|
+ model_name = data.get('model_name', 'RF_filt') # 提取模型名称
|
|
|
+ parameters = data.get('parameters', {}) # 提取所有参数
|
|
|
|
|
|
- # 将数据转为 pandas DataFrame,确保数据列名一致
|
|
|
- input_data = pd.DataFrame([data])
|
|
|
+ input_data = pd.DataFrame([parameters]) # 转换参数为DataFrame
|
|
|
+ predictions = predict(input_data, model_name) # 调用预测函数
|
|
|
|
|
|
- # 调用模型进行预测
|
|
|
- predictions = predict(input_data)
|
|
|
-
|
|
|
- # 返回预测结果
|
|
|
return jsonify({'predictions': predictions}), 200
|
|
|
except Exception as e:
|
|
|
return jsonify({'error': str(e)}), 400
|
|
|
|
|
|
-
|
|
|
# 定义添加数据库记录的 API 接口
|
|
|
@bp.route('/add_item', methods=['POST'])
|
|
|
def add_item():
|