iT邦幫忙

0

Day 09 - 橋起溝通的橋樑:資料庫依賴注入 (Dependency)

  • 分享至 

  • xImage
  •  

資料庫連線設定好了,資料表也定義好了。那麼,當前端發出一條 API 請求時,我們該怎麼把資料庫交給 API 使用呢?

FastAPI 提供了一個非常強大的核心功能,叫做「依賴注入 (Dependency Injection)」。簡單來說,我們可以寫一個函式,規定在每一次 API 呼叫時自動開啟一個資料庫對話(Session),並在 API 處理完畢後自動關閉它,確保資源不浪費也不會互相干擾。

讓我們回到 main.py,把這幾天的東西整合起來:

from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
import models
from database import engine, SessionLocal

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

app = FastAPI()

def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()

@app.get("/items/db-test")
def test_db_connection(db: Session = Depends(get_db)):
return {"message": "資料庫連線與依賴注入成功!"}

程式碼解析:

models.Base.metadata.create_all(bind=engine) 會檢查資料庫,如果資料表不存在就會自動幫你建好。

get_db 就是我們的依賴函式。yield db 會把資料庫交給 API 使用,等 API 執行完後,就會走到 finally 執行 db.close() 來安全地關閉連線。

在 API 路由中,只要寫 db: Session = Depends(get_db),FastAPI 就會在背後幫你把一切打理好。這種寫法非常優雅,也是 FastAPI 適合開發大型專案的關鍵原因。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言