standard_dao.py 1.4 KB

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