什麼是定義資料表模型 (ORM Models)
在 FastAPI 開發中,ORM 模型是用來與資料庫進行互動的橋樑。簡單來說,它將Python 的類別 (Class)對應到資料庫的表格 (Table),並將類別的屬性對應到表格的欄位 (Column)。
ORM Models 基礎語法
- 繼承 Base 類別:模型必須繼承自 SQLAlchemy 的宣告式基底類別。
- 設定表名:使用 __tablename__ 屬性指定資料庫中的表格名稱。
- 定義欄位:使用 Column 來定義欄位,並指定資料型別 (如 Integer, String)。
- 設定主鍵:至少有一個欄位需設定 primary_key=True。
常見錯誤與解決方法
- 誤將 Pydantic 模型 (用於資料驗證/API 互動) 直接當作 ORM 模型 (用於資料庫存取) 使用。
- 在 Column(...) 裡面,必須使用 SQLAlchemy 提供的型別 (例如 Integer, String),而不是 Python 內建的型別 (例如 int, str)。
from sqlalchemy import Column, Integer, String, Boolean
from database import Base # 假設 Base 已在 database.py 中定義
class User(Base):
# 1. 定義資料庫中的表格名稱
__tablename__ = "users"
# 2. 定義欄位
id = Column(Integer, primary_key=True, index=True) # 主鍵,設索引以加速查詢
email = Column(String, unique=True, index=True) # Email 不可重複
hashed_password = Column(String) # 儲存加密後的密碼
is_active = Column(Boolean, default=True) # 預設為啟用狀態
# 這樣的定義會自動在資料庫產生對應的 SQL CREATE TABLE 語句











