config.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """3D 模块服务端配置:路径、端口与数据库。"""
  2. import os
  3. from pathlib import Path
  4. BASE_DIR = Path(__file__).resolve().parent # 3d/backend
  5. MODULE_DIR = BASE_DIR.parent # 3d
  6. MODELS_DIR = MODULE_DIR / "models"
  7. DATA_DIR = MODULE_DIR / "data"
  8. DATA_FILE = DATA_DIR / "color_state.json"
  9. SCENE_CSV = DATA_DIR / "scene_positions.csv"
  10. FRONTEND_DIST = MODULE_DIR / "frontend" / "dist"
  11. # 数据库凭据沿用项目根目录的 数据库.md(与 backend/app/config.py 同源,不复制到代码里)。
  12. _DB_NOTE = BASE_DIR.parents[1] / "数据库.md"
  13. def _db_values() -> dict[str, str]:
  14. values: dict[str, str] = {}
  15. if not _DB_NOTE.exists():
  16. return values
  17. for line in _DB_NOTE.read_text(encoding="utf-8").splitlines():
  18. if ":" in line:
  19. key, value = line.split(":", 1)
  20. elif "=" in line:
  21. key, value = line.split("=", 1)
  22. else:
  23. continue
  24. values[key.strip().lower()] = value.strip()
  25. return values
  26. _db = _db_values()
  27. DB_HOST = os.getenv("DB_HOST", _db.get("host", "127.0.0.1"))
  28. DB_PORT = int(os.getenv("DB_PORT", _db.get("port", "3306")))
  29. DB_USER = os.getenv("DB_USER", _db.get("user", "root"))
  30. DB_PASSWORD = os.getenv("DB_PASSWORD", _db.get("password", ""))
  31. DB_NAME = os.getenv("DB_NAME", _db.get("db_name", "compressorsensor"))
  32. DB_CONNECT_TIMEOUT = int(os.getenv("DB_CONNECT_TIMEOUT", "5"))