第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

快速 API - MySQL - SQLAlchemy:在 Pydantic 模型中獲取

快速 API - MySQL - SQLAlchemy:在 Pydantic 模型中獲取

慕標(biāo)5832272 2023-12-09 16:02:59
我對(duì)這個(gè)框架相當(dāng)陌生,但我正在為一家小公司開(kāi)發(fā)時(shí)間表應(yīng)用程序(API)。我遇到的問(wèn)題是,當(dāng)我從 mysql 選擇時(shí)間值時(shí),我在 pydantic 模塊中收到以下錯(cuò)誤:pydantic.error_wrappers.ValidationError: 2 validation errors for TimeSheetRange response -> 0 -> total   invalid type; expected time, string, bytes, int or float (type=type_error) response -> 1 -> total   invalid type; expected time, string, bytes, int or float (type=type_error)我已經(jīng)嘗試了很多解決方法來(lái)從 mysql 獲取字符串時(shí)間,to_char()但也失敗了,但我更想知道這里的問(wèn)題是什么,因?yàn)槲蚁胧褂脭?shù)據(jù)類(lèi)型時(shí)間...schemas.pyfrom typing import List, Optionalfrom datetime import date, time, datetimefrom pydantic import BaseModelfrom . import models...class TimeSheetRange(BaseModel):    user_id: int    start: date    total: time    class Config:        orm_mode = Truecrud.pydef get_timesheet_by_date_range_and_user(db: Session, user_id=int, date_start=datetime, date_end=datetime):    return db.query(models.TimeSheet.user_id, \                    func.date(models.TimeSheet.start).label('start'), \                    func.sec_to_time(func.sum(func.timediff(models.TimeSheet.end,models.TimeSheet.start))).label('total') ) \            .filter(models.TimeSheet.user_id == user_id) \            .filter(func.date(models.TimeSheet.start) >= date_start) \            .filter(func.date(models.TimeSheet.end) <= date_end) \            .group_by(func.date(models.TimeSheet.start)) \            .all()main.py@app.get("/timesheets/range/", response_model=List[schemas.TimeSheetRange])    def read_timesheets(user_id: int, date_start:date = datetime.now().date(), date_end:date = datetime.now().date(), db: Session = Depends(get_db)):        timesheets = crud.get_timesheet_by_date_range_and_user(db, user_id=user_id, date_start=date_start, date_end=date_end)        return timesheets以及使用結(jié)果構(gòu)建的 SQL 查詢(xún):SELECT     timesheet.user_id AS timesheet_user_id,     date(timesheet.start) AS start,    sec_to_time(sum(timediff(timesheet.end, timesheet.start))) AS total  FROM 數(shù)據(jù)類(lèi)型有問(wèn)題time還是我錯(cuò)過(guò)了一些非常愚蠢的東西?
查看完整描述

1 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

我認(rèn)為這里的問(wèn)題是,您使用的 Pydantic 模型需要一個(gè)time對(duì)象類(lèi)型,而它應(yīng)該需要一個(gè)timedelta類(lèi)型,因?yàn)槟?sql 語(yǔ)句似乎表明您正在計(jì)算列的時(shí)間差total。


所以你的 Pydantic schemas.py 文件應(yīng)該是:


from typing import List, Optional

from datetime import date, datetime, timedelta


from pydantic import BaseModel

from . import models


...



class TimeSheetRange(BaseModel):

    user_id: int

    start: date

    total: timedelta


    class Config:

        orm_mode = True


查看完整回答
反對(duì) 回復(fù) 2023-12-09
  • 1 回答
  • 0 關(guān)注
  • 347 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)