standard_dao.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """
  2. 标准库数据访问对象
  3. 用于从MySQL一次性加载所有标准数据到内存
  4. """
  5. import sys
  6. import os
  7. # 添加项目根目录到 Python 路径
  8. current_dir = os.path.dirname(os.path.abspath(__file__))
  9. project_root = os.path.dirname(os.path.dirname(current_dir))
  10. if project_root not in sys.path:
  11. sys.path.insert(0, project_root)
  12. from typing import List, Dict, Optional
  13. class StandardDAO:
  14. """标准库数据访问对象 - 负责从数据库加载数据"""
  15. def __init__(self, db_pool):
  16. self.db_pool = db_pool
  17. self.table_name = "t_samp_standard_base_info"
  18. async def load_all_standards(self) -> List[Dict]:
  19. """
  20. 一次性从MySQL加载所有标准数据到内存
  21. Returns:
  22. 标准列表,每个标准包含:
  23. - id: 序号
  24. - standard_name: 标准名称(chinese_name)
  25. - standard_number: 标准号
  26. - validity: 时效性(XH/SX/FZ)
  27. """
  28. query = f"""
  29. SELECT
  30. id,
  31. chinese_name AS standard_name,
  32. standard_number,
  33. validity
  34. FROM {self.table_name}
  35. """
  36. try:
  37. async with self.db_pool.get_cursor() as cursor:
  38. await cursor.execute(query)
  39. results = await cursor.fetchall()
  40. return [dict(row) for row in results] if results else []
  41. except Exception as e:
  42. print(f"加载标准库数据失败: {e}")
  43. raise