如何计算fastapi中的总小时数?
How to count total hour in fastapi?
我正在尝试计算总工作时间并加起来 is_overtime
个数字,但我不知道该怎么做。
到目前为止我的代码:
模特:
class Workhour(IdMixin, Base, TimestampMixin):
__tablename__ = "workhour"
user_id = Column(Integer, ForeignKey("user.id"))
task_id = Column(Integer, ForeignKey("task.id"))
date = Column(Date)
hour = Column(Numeric(4,2))
is_overtime = Column(Boolean, default=False)
description = Column(String(255), index=True)
active = Column(Boolean, default=True)
user = relationship("User", back_populates="workhours", uselist=False)
task = relationship("Task", back_populates="workhours", uselist=False)
crud.py
def get_totalworkhours_by_user_id(db: Session, user_id: int, skip: int = 0):
return db.query(models.Workhour.hour).filter(models.Workhour.user_id == user_id).offset(skip).count()
schemas.py
class WorkhourBase(BaseModel):
user_id: Optional[int] = None
task_id: int
date: datetime.date
hour: float
description: Optional[str] = None
is_overtime: Optional[bool] = False
class Workhour(WorkhourBase):
id: int
class Config:
orm_mode = True
class WorkhourFull(Workhour):
user: Optional[User]
task: Optional[Task]
api/workhour.py
@router.get("/totalhour", response_model=schemas.WorkhourFull)
def read_totalworkhours(skip: int=0, user_id: int = None, db: Session = Depends(get_db)):
if user_id:
totalworkhours = crud.get_totalworkhours_by_user_id(db, skip=skip, user_id=user_id)
return totalworkhours
这可能更像是一个 sqlalchemy 问题,而不是 FastAPI 问题,但类似于:
db.query(func.sum(Score.score)\
.label("hours_worked"))\
.filter(models.Workhour.user_id == user_id)\
.first()
应该会为您提供该特定用户 ID 的总工作小时数。 func
可以从 sqlalchemy.sql
导入:
from sqlalchemy.sql import func
我正在尝试计算总工作时间并加起来 is_overtime
个数字,但我不知道该怎么做。
到目前为止我的代码:
模特:
class Workhour(IdMixin, Base, TimestampMixin):
__tablename__ = "workhour"
user_id = Column(Integer, ForeignKey("user.id"))
task_id = Column(Integer, ForeignKey("task.id"))
date = Column(Date)
hour = Column(Numeric(4,2))
is_overtime = Column(Boolean, default=False)
description = Column(String(255), index=True)
active = Column(Boolean, default=True)
user = relationship("User", back_populates="workhours", uselist=False)
task = relationship("Task", back_populates="workhours", uselist=False)
crud.py
def get_totalworkhours_by_user_id(db: Session, user_id: int, skip: int = 0):
return db.query(models.Workhour.hour).filter(models.Workhour.user_id == user_id).offset(skip).count()
schemas.py
class WorkhourBase(BaseModel):
user_id: Optional[int] = None
task_id: int
date: datetime.date
hour: float
description: Optional[str] = None
is_overtime: Optional[bool] = False
class Workhour(WorkhourBase):
id: int
class Config:
orm_mode = True
class WorkhourFull(Workhour):
user: Optional[User]
task: Optional[Task]
api/workhour.py
@router.get("/totalhour", response_model=schemas.WorkhourFull)
def read_totalworkhours(skip: int=0, user_id: int = None, db: Session = Depends(get_db)):
if user_id:
totalworkhours = crud.get_totalworkhours_by_user_id(db, skip=skip, user_id=user_id)
return totalworkhours
这可能更像是一个 sqlalchemy 问题,而不是 FastAPI 问题,但类似于:
db.query(func.sum(Score.score)\
.label("hours_worked"))\
.filter(models.Workhour.user_id == user_id)\
.first()
应该会为您提供该特定用户 ID 的总工作小时数。 func
可以从 sqlalchemy.sql
导入:
from sqlalchemy.sql import func