代码有两个版本。
在第一种情况下,向 read_menus 函数传递一个数据库连接:
# router.py
@router.get("/", response_model=list[schemas.Menu])
def read_menus(db: Session = Depends(get_db)):
menus = service.get_menus(db)
if not menus:
raise HTTPException(status_code=204, detail="No menu found")
return menus
# service.py
def get_menus(db: Session = Depends(get_db)):
return db.query(models.Menu).all()
第二,在 get_menus 函数中创建数据库连接:
# router.py
@router.get("/", response_model=list[schemas.Menu])
def read_menus():
menus = service.get_menus()
if not menus:
raise HTTPException(status_code=204, detail="No menu found")
return menus
# servise.py
def get_menus():
db: Session = Depends(get_db)
return db.query(models.Menu).all()
在第一种情况下一切正常,但在第二种情况下它会出错 AttributeError: 'Depends' object has no attribute 'query'
为什么会这样?以我的理解,这两个版本的工作方式应该相同。
