generated_demand_repo.py 815 B

123456789101112131415161718192021222324252627
  1. from __future__ import annotations
  2. from sqlalchemy.dialects.mysql import insert
  3. from supply_infra.db.models.generated_demand import GeneratedDemand
  4. from supply_infra.db.repositories.base import BaseRepository
  5. _BATCH_SIZE = 500
  6. class GeneratedDemandRepository(BaseRepository[GeneratedDemand]):
  7. """单维度需求产生结果表 repository。"""
  8. model = GeneratedDemand
  9. def bulk_insert(self, rows: list[dict]) -> int:
  10. """批量插入生成结果行。"""
  11. if not rows:
  12. return 0
  13. inserted = 0
  14. for i in range(0, len(rows), _BATCH_SIZE):
  15. batch = rows[i : i + _BATCH_SIZE]
  16. stmt = insert(GeneratedDemand).values(batch)
  17. result = self.session.execute(stmt)
  18. inserted += result.rowcount or 0
  19. return inserted