如何在FastAPI中使用ORM庫進行資料操作

王林
發布: 2023-07-30 17:00:41
原創
2733 人瀏覽過

如何在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)
登入後複製

上述程式碼將在資料庫中建立所有定義的資料模型對應的表。

五、資料操作範例
以使用者模型為例,我們將給出一些常見的資料操作範例。

  1. 查詢所有使用者

    from sqlalchemy.orm import Session
    from . import models
    
    def get_users(db: Session):
     return db.query(models.User).all()
    登入後複製

    在上述程式碼中,我們透過查詢所有使用者資料並傳回。

  2. 查詢單一使用者

    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查詢單一使用者資料並傳回。

  3. 建立使用者

    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
    登入後複製

    在上述程式碼中,我們透過將傳入的使用者資料儲存到資料庫並傳回。

  4. 更新使用者

    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將傳入的更新資料儲存至資料庫。

  5. 刪除使用者

    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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!