小编Raf*_*faó的帖子

在事件上创建 SQLAlchemy 会话

如果我想在处理请求时使用数据库,我会进行如下依赖注入:

@app.post("/sample_test")
async def sample_test(db: Session = Depends(get_db)):
    return db.query(models.User.height).all()
Run Code Online (Sandbox Code Playgroud)

但我不能用这样的事件来做到这一点:

@app.on_event("startup")
async def sample_test(db: Session = Depends(get_db)):
    return db.query(models.User.height).all()
Run Code Online (Sandbox Code Playgroud)

因为starlette事件不支持 Depends。

这是我的get_db()功能:

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()
Run Code Online (Sandbox Code Playgroud)

就像 FastAPI 手册( https://fastapi.tiangolo.com/tutorial/sql-databases/ )中一样。

如何访问get_db()我的事件函数内部,以便我可以使用会话?

我试过了:

@app.on_event("startup")
async def sample_test(db: Session = Depends(get_db)):
    db = next(get_db())
    return db.query(models.User.height).all()
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

如果重要的话我会使用 MSSQL。

python sqlalchemy fastapi

5
推荐指数
1
解决办法
1481
查看次数

标签 统计

fastapi ×1

python ×1

sqlalchemy ×1