evaluate_record.py 1.6 KB

1234567891011121314151617181920212223242526272829303132
  1. from typing import Optional
  2. from pydantic import BaseModel, Field
  3. from typing_extensions import Annotated
  4. from utils.general import get_now_ts
  5. from utils.sync_mysql_help import mysql
  6. class EvaluateRecord(BaseModel):
  7. table_name: Annotated[Optional[str], Field(description='表名', exclude=True)] = 'evaluate_record'
  8. evaluate_id: Annotated[str, Field(description='任务ID', default=None)]
  9. task_id: Annotated[Optional[str], Field(description='任务ID', default=None)]
  10. status: Annotated[Optional[int], Field(description='任务状态', default=1)] # 1: 进行中, 2: 已完成, 3: 失败
  11. search_result: Annotated[Optional[str], Field(description='关键词结果', default=None)]
  12. evaluate_result: Annotated[Optional[str], Field(description='评估结果', default=None)]
  13. error_reason: Annotated[Optional[str], Field(description='失败原因', default=None)]
  14. created_at: Annotated[Optional[int], Field(description='任务创建时间戳', default_factory=get_now_ts)]
  15. def save(self):
  16. record = self.model_dump(exclude={'table_name'})
  17. keys = record.keys()
  18. sql = f'''INSERT INTO {self.table_name} ({", ".join(keys)}) VALUES ({", ".join(["%s"] * len(keys))})'''
  19. mysql.execute(sql, tuple([record[key] for key in keys]))
  20. async def async_save(self):
  21. record = self.model_dump(exclude={'table_name'})
  22. keys = record.keys()
  23. sql = f'''INSERT INTO {self.table_name} ({", ".join(keys)}) VALUES ({", ".join(["%s"] * len(keys))})'''
  24. await mysql.execute(sql, tuple([record[key] for key in keys]))