完善相关问题,并增加推理的部分代码
This commit is contained in:
@ -1,9 +1,10 @@
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import asc
|
||||
from sqlalchemy import asc, func
|
||||
from typing import List
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
|
||||
from app.model.bussiness_model import ProjectImage as piModel
|
||||
from app.model.schemas.project_image_schemas import ProjectImage, ProjectImagePager
|
||||
from app.model.bussiness_model import ProjectImage as piModel, ProjectImgLabel
|
||||
from app.model.schemas.project_image_schemas import ProjectImage, ProjectImagePager, ProjectImageOut
|
||||
from app.db.page_util import get_pager
|
||||
|
||||
|
||||
@ -14,6 +15,35 @@ def get_image_pager(image: ProjectImagePager, session: Session):
|
||||
return pager
|
||||
|
||||
|
||||
def get_image_pager2(image: ProjectImage, session: Session):
|
||||
# 1 子查询
|
||||
subquery = (
|
||||
session.query(
|
||||
ProjectImgLabel.image_id,
|
||||
func.ifnull(func.count(ProjectImgLabel.id), 0).label('label_count')
|
||||
)
|
||||
.group_by(ProjectImgLabel.image_id)
|
||||
.subquery()
|
||||
)
|
||||
# 2 主查询
|
||||
query = (
|
||||
session.query(
|
||||
piModel,
|
||||
func.ifnull(subquery.c.label_count, 0).label('label_count')
|
||||
)
|
||||
.outerjoin(subquery, piModel.id == subquery.c.image_id)
|
||||
)
|
||||
query = query.filter(piModel.project_id == image.project_id).order_by(asc(piModel.id))
|
||||
pager = get_pager(query, image.pagerNum, image.pagerSize)
|
||||
datas = []
|
||||
for result in pager.data:
|
||||
data = ProjectImageOut.from_orm(result[0])
|
||||
data.label_count = result[1]
|
||||
datas.append(data)
|
||||
pager.data = jsonable_encoder(datas)
|
||||
return pager
|
||||
|
||||
|
||||
def check_img_name(project_id: int, file_name: str, session: Session):
|
||||
"""
|
||||
根据项目id和文件名称进行查重
|
||||
|
Reference in New Issue
Block a user