前幾天的 API 我們用的都是寫死在程式碼裡的清單來模擬資料庫,只要伺服器一重開,新增的資料就會人間蒸發。為了解決這個問題,從今天開始我們要正式導入資料庫。
在 FastAPI 的生態系中,最常搭配的資料庫操作工具是 SQLAlchemy。它是一個強大的 ORM (Object-Relational Mapping) 套件,核心概念是讓開發者可以用「寫 Python 物件」的方式來操作資料庫,而不用親自去寫繁瑣的 SQL 語法(例如 SELECT、INSERT)。
首先,在終端機安裝 SQLAlchemy 套件:
pip install sqlalchemy
接著,我們建立一個名為 database.py 的檔案來設定資料庫連線。為了方便本機端測試與繳交作業,我們先使用 Python 內建的輕量級資料庫 SQLite:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
這段程式碼的核心是建立了一個 engine(負責驅動資料庫)以及 SessionLocal(用來開啟資料庫對話的工作階段)。最後宣告的 Base 是所有資料表的基底,明天我們就會用到它。