38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import json
|
|
import os
|
|
from pathlib import Path
|
|
from urllib.parse import quote_plus
|
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parents[1]
|
|
MYSQL_CONFIG_PATH = BASE_DIR / "mysqlconfig.json"
|
|
|
|
|
|
def load_mysql_config() -> dict:
|
|
if not MYSQL_CONFIG_PATH.exists():
|
|
raise FileNotFoundError(f"未找到 MySQL 配置文件: {MYSQL_CONFIG_PATH}")
|
|
with MYSQL_CONFIG_PATH.open("r", encoding="utf-8-sig") as file:
|
|
return json.load(file)
|
|
|
|
|
|
def build_mysql_uri(mysql_cfg: dict) -> str:
|
|
user = mysql_cfg["user"]
|
|
password = quote_plus(mysql_cfg["password"])
|
|
host = mysql_cfg.get("host", "127.0.0.1")
|
|
port = mysql_cfg.get("port", 3306)
|
|
database = mysql_cfg["database"]
|
|
charset = mysql_cfg.get("charset", "utf8mb4")
|
|
return f"mysql+pymysql://{user}:{password}@{host}:{port}/{database}?charset={charset}"
|
|
|
|
|
|
class Config:
|
|
MYSQL_CONFIG = load_mysql_config()
|
|
SQLALCHEMY_DATABASE_URI = build_mysql_uri(MYSQL_CONFIG)
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY", "replace-this-jwt-secret-key-in-production")
|
|
SECRET_KEY = os.getenv("FLASK_SECRET_KEY", "replace-this-flask-secret-key-in-production")
|
|
|
|
SPAM_DATASET_PATH = str(BASE_DIR / "seed" / "spam_samples_seed.json")
|
|
NB_MODEL_PATH = str(BASE_DIR / "models" / "spam_nb_model.joblib")
|