From 758082db141bb1b280a998dd1e32e7597c4b4807 Mon Sep 17 00:00:00 2001 From: sunyugang Date: Fri, 7 Mar 2025 09:56:09 +0800 Subject: [PATCH] =?UTF-8?q?python=E6=97=B6=E5=8C=BA=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/business/project_detect_api.py | 10 +++++----- app/db/db_base.py | 9 ++++++--- app/model/crud/project_detect_crud.py | 18 +++++++++++++++++- app/model/schemas/project_detect_schemas.py | 6 ++++++ app/service/project_detect_service.py | 1 + app/service/project_train_service.py | 2 +- 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/app/api/business/project_detect_api.py b/app/api/business/project_detect_api.py index fd3ba54..15cf362 100644 --- a/app/api/business/project_detect_api.py +++ b/app/api/business/project_detect_api.py @@ -9,7 +9,7 @@ from app.model.crud import project_detect_crud as pdc from app.service import project_detect_service as pds from app.model.crud.project_train_crud import get_train from app.model.schemas.project_detect_schemas import ProjectDetectPager, ProjectDetectIn,\ - ProjectDetectImgPager, ProjectDetectLogIn + ProjectDetectImgPager, ProjectDetectLogIn, ProjectDetectLogPager from app.db.db_session import get_db detect = APIRouter() @@ -123,15 +123,15 @@ def run_detect_yolo(detect_log_in: ProjectDetectLogIn, session: Session = Depend detect_log.id, detect_log.detect_id, session), media_type="text/plain") -@detect.get("/get_log_list/{detect_id}") -def get_log_list(detect_id: int, session: Session = Depends(get_db)): +@detect.post("/get_log_pager") +def get_log_pager(detect_log_pager: ProjectDetectLogPager, session: Session = Depends(get_db)): """ 根据推理集合id获取推理记录 - :param detect_id: + :param detect_log_pager: :param session: :return: """ - result = pdc.get_log_list(detect_id, session) + result = pdc.get_log_pager(detect_log_pager, session) result = jsonable_encoder(result) return rc.response_success(data=result) diff --git a/app/db/db_base.py b/app/db/db_base.py index de04cb7..524d6ee 100644 --- a/app/db/db_base.py +++ b/app/db/db_base.py @@ -1,15 +1,18 @@ from sqlalchemy.ext.declarative import declarative_base, declared_attr from sqlalchemy.orm import Mapped, mapped_column -import datetime +from datetime import datetime +from zoneinfo import ZoneInfo Base = declarative_base() +local_timezone = ZoneInfo("Asia/Shanghai") class DbCommon(Base): __abstract__ = True id: Mapped[int] = mapped_column(primary_key=True) - create_time: Mapped[datetime.datetime] = mapped_column(default=datetime.datetime.utcnow()) - update_time: Mapped[datetime.datetime] = mapped_column(default=datetime.datetime.utcnow(), onupdate=datetime.datetime.utcnow()) + create_time: Mapped[datetime] = mapped_column(default=datetime.now(local_timezone)) + update_time: Mapped[datetime] = mapped_column(default=datetime.now(local_timezone), + onupdate=datetime.now(local_timezone)) @declared_attr def __tablename__(cls): diff --git a/app/model/crud/project_detect_crud.py b/app/model/crud/project_detect_crud.py index 363f994..27af674 100644 --- a/app/model/crud/project_detect_crud.py +++ b/app/model/crud/project_detect_crud.py @@ -5,7 +5,8 @@ from fastapi.encoders import jsonable_encoder from app.model.bussiness_model import ProjectDetect, ProjectDetectImg, ProjectDetectLog, ProjectDetectLogImg from app.model.schemas.project_detect_schemas import ProjectDetectOut, ProjectDetectPager, \ - ProjectDetectImageOut, ProjectDetectImgPager, ProjectDetectLogOut, ProjectDetectLogImgOut, ProjectDetectList + ProjectDetectImageOut, ProjectDetectImgPager, ProjectDetectLogOut, ProjectDetectLogImgOut, \ + ProjectDetectList, ProjectDetectLogPager from app.db.page_util import get_pager @@ -178,6 +179,21 @@ def get_log_list(detect_id: int, session: Session): return result +def get_log_pager(detect_log_pager: ProjectDetectLogPager, session: Session): + """ + 获取分页数据 + :param detect_log_pager: + :param session: + :return: + """ + query = session.query(ProjectDetectLog).filter_by(detect_id=detect_log_pager.detect_id)\ + .order_by(asc(ProjectDetectLog.id)) + pager = get_pager(query, detect_log_pager.pagerNum, detect_log_pager.pagerSize) + pager.data = [ProjectDetectLogOut.from_orm(log) for log in pager.data] + pager.data = jsonable_encoder(pager.data) + return pager + + def get_log_imgs(log_id: int, session: Session): query = session.query(ProjectDetectLogImg).filter_by(log_id=log_id).order_by(asc(ProjectDetectLogImg.id)) result = [ProjectDetectLogImgOut.from_orm(img) for img in query.all()] diff --git a/app/model/schemas/project_detect_schemas.py b/app/model/schemas/project_detect_schemas.py index ae7c5c8..d198d7a 100644 --- a/app/model/schemas/project_detect_schemas.py +++ b/app/model/schemas/project_detect_schemas.py @@ -66,6 +66,12 @@ class ProjectDetectLogIn(BaseModel): pt_type: Optional[str] = Field('best', description="权重文件类型") +class ProjectDetectLogPager(BaseModel): + detect_id: Optional[int] = Field(..., description="推理集合id") + pagerNum: Optional[int] = Field(None, description="当前页码") + pagerSize: Optional[int] = Field(None, description="每页数量") + + class ProjectDetectLogOut(BaseModel): id: Optional[int] detect_id: Optional[int] diff --git a/app/service/project_detect_service.py b/app/service/project_detect_service.py index 9fac1bc..1f12060 100644 --- a/app/service/project_detect_service.py +++ b/app/service/project_detect_service.py @@ -106,6 +106,7 @@ def run_detect_yolo(detect_in: ProjectDetectLogIn, detect: ProjectDetect, train: # 构建推理记录数据 detect_log = ProjectDetectLog() + detect_log.detect_name = detect.detect_name detect_log.detect_id = detect.id detect_log.detect_version = version_path detect_log.train_id = train.id diff --git a/app/service/project_train_service.py b/app/service/project_train_service.py index b90a78e..6429497 100644 --- a/app/service/project_train_service.py +++ b/app/service/project_train_service.py @@ -190,7 +190,7 @@ def run_commend(data: str, project: str, "--name=" + name, "--epochs=" + str(epochs), "--batch-size=4", - "--exist_ok"], + "--exist-ok"], bufsize=1, # bufsize=0时,为不缓存;bufsize=1时,按行缓存;bufsize为其他正整数时,为按照近似该正整数的字节数缓存 shell=False, stdout=subprocess.PIPE,