我得到了:
文件"C:\PythonProjects\myProject\routers\home.py",第39行, @router.get("/home",response_class=HTMLResponse)
...
raise TypeError('{!r}不是可调用对象". format(obj)) TypeError:0x 000002 B68 FBDB 100处的生成器对象get_db不是 可调用对象
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})
database.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()
main.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)