数据问题“TypeError:<generator object get_db at 0x000002B68FBDB100>不是可调用对象”

问题描述 投票:0回答:1

我明白了

文件“C:\PythonProjects\myProject 外部\home.py”,第 39 行,在 @router.get("/home", response_class=HTMLResponse)

...

raise TypeError('{!r} 不是可调用对象'.format(obj)) 类型错误: 不是 可调用对象

home.py

    from fastapi import Depends, APIRouter, Request
    from fastapi.templating import Jinja2Templates
    from sqlalchemy.orm import Session
    from starlette.responses import HTMLResponse
    
    from database import SessionLocal, engine
    from models import Base
    
    router = APIRouter()
    templates = Jinja2Templates(directory="templates", autoescape=False)
    Base.metadata.create_all(bind=engine)
    
    
    def get_db():
        try:
            db = SessionLocal()
            yield db
        finally:
            db.close()

@router.get("/home", response_class=HTMLResponse)
async def all_skills(request: Request, db: Session = Depends(get_db())):
    all = db.query()
    return templates.TemplateResponse("home.html", {"request": request, "show": all})

数据库.py

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQL_ALCHEMY_DATABASE_URL = "postgresql://postgres:password@localhost/DatabaseName"

engine = create_engine(SQL_ALCHEMY_DATABASE_URL)

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()

主.py

from fastapi import FastAPI

import models
from database import engine
from routers import home
from starlette.staticfiles import StaticFiles


app = FastAPI()

models.Base.metadata.create_all(bind=engine)

app.mount("/static", StaticFiles(directory="static"), name="static")

app.include_router(home.router)
python database postgresql generator fastapi
1个回答
0
投票

您不应该调用要用作依赖项的函数:

Depends(get_db)

而不是

Depends(get_db())
© www.soinside.com 2019 - 2024. All rights reserved.