如何在FastAPI中使用ORM函式庫進行資料運算
引言:
FastAPI是一個基於Python的現代化Web框架,它的設計靈感來自Starlette和Pydantic,是一個高效能的框架,特別適合用於建立快速、可伸縮和高效能的RESTful API服務。在FastAPI中,借助ORM(物件關係映射)庫,我們可以更方便地進行資料庫操作。本文將引導您如何在FastAPI中使用ORM庫進行資料操作,並提供一些程式碼範例。
一、ORM庫簡介
ORM(物件關聯映射)是一種將資料庫中的資料映射為物件的技術。 ORM函式庫能夠讓開發者透過定義物件模型來操作資料庫,而不用直接編寫SQL語句。在FastAPI中,常用的ORM函式庫有SQLAlchemy、Peewee等。本文以SQLAlchemy為例進行說明。
二、安裝和設定SQLAlchemy
在使用SQLAlchemy前,我們首先需要安裝SQLAlchemy函式庫。可以透過以下命令進行安裝:
pip install sqlalchemy
安裝完成後,我們需要設定資料庫的連線配置。在FastAPI中,可以在main.py檔案中加入以下程式碼:
from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base, sessionmaker SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" engine = create_engine(SQLALCHEMY_DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base()
上述程式碼中,我們建立了一個SQLite資料庫,並定義了SessionLocal用於建立資料庫會話。 SQLALCHEMY_DATABASE_URL是資料庫的連接的URL。
三、定義資料模型
在使用ORM進行資料運算之前,我們需要定義資料模型。可以在models.py檔案中定義資料模型。以一個範例使用者模型為例,範例如下:
from sqlalchemy import Column, Integer, String from database import Base class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) name = Column(String(50), unique=True, index=True) email = Column(String(50), unique=True, index=True) password = Column(String(100))
在上述程式碼中,我們定義了一個名為User的資料模型,並指定了資料表名為"users"。在資料模型中,我們可以定義各個欄位的類型等。
四、建立資料表
在使用ORM進行資料操作之前,我們需要建立對應的資料庫表。可以在main.py檔案中加入以下程式碼:
Base.metadata.create_all(bind=engine)
上述程式碼將在資料庫中建立所有定義的資料模型對應的表。
五、資料操作範例
以使用者模型為例,我們將給出一些常見的資料操作範例。
查詢所有使用者
from sqlalchemy.orm import Session from . import models def get_users(db: Session): return db.query(models.User).all()
在上述程式碼中,我們透過查詢所有使用者資料並傳回。
查詢單一使用者
from sqlalchemy.orm import Session from . import models def get_user_by_id(db: Session, user_id: int): return db.query(models.User).filter(models.User.id == user_id).first()
在上述程式碼中,我們透過使用者id查詢單一使用者資料並傳回。
建立使用者
from sqlalchemy.orm import Session from . import models, schemas def create_user(db: Session, user: schemas.UserCreate): hashed_password = hashlib.sha256(user.password.encode()).hexdigest() db_user = models.User(name=user.name, email=user.email, password=hashed_password) db.add(db_user) db.commit() db.refresh(db_user) return db_user
在上述程式碼中,我們透過將傳入的使用者資料儲存到資料庫並傳回。
更新使用者
from sqlalchemy.orm import Session from . import models, schemas def update_user(db: Session, user_id: int, user: schemas.UserUpdate): db_user = db.query(models.User).filter(models.User.id == user_id).first() if user.name: db_user.name = user.name if user.email: db_user.email = user.email if user.password: db_user.password = hashlib.sha256(user.password.encode()).hexdigest() db.commit() db.refresh(db_user) return db_user
在上述程式碼中,我們透過使用者id將傳入的更新資料儲存至資料庫。
刪除使用者
from sqlalchemy.orm import Session from . import models def delete_user(db: Session, user_id: int): db_user = db.query(models.User).filter(models.User.id == user_id).first() db.delete(db_user) db.commit() return {'message': f"User {user_id} deleted successfully"}
在上述程式碼中,我們透過使用者id從資料庫中刪除使用者資料。
結語:
透過上述的程式碼範例,我們可以看出,在FastAPI中使用ORM函式庫進行資料運算是相對簡單的。借助ORM函式庫,我們不需要直接寫SQL語句,而是可以透過物件模型進行資料庫操作,讓程式碼更加簡潔、可讀性更好。希望本文對您在FastAPI專案中使用ORM函式庫進行資料操作有所幫助。
以上是如何在FastAPI中使用ORM庫進行資料操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!