FastAPI でのデータ操作に ORM ライブラリを使用する方法

王林
リリース: 2023-07-30 17:00:41
オリジナル
2748 人が閲覧しました

FastAPI でのデータ操作に ORM ライブラリを使用する方法

はじめに:
FastAPI は、Python をベースにした最新の Web フレームワークであり、その設計は Starlette と Pydantic からインスピレーションを受けており、高パフォーマンスのフレームワークです. 、高速でスケーラブルで高性能な RESTful API サービスを構築するのに特に適しています。 FastAPI では、ORM (オブジェクト リレーショナル マッピング) ライブラリの助けを借りて、データベース操作をより便利に実行できます。この記事では、FastAPI でのデータ操作に ORM ライブラリを使用する方法を説明し、いくつかのコード例を示します。

1. ORM ライブラリの紹介
ORM (Object Relational Mapping) は、データベース内のデータをオブジェクトにマッピングするテクノロジーです。 ORM ライブラリを使用すると、開発者は SQL ステートメントを直接記述せずにオブジェクト モデルを定義することでデータベースを操作できます。 FastAPI で一般的に使用される ORM ライブラリには、SQLAlchemy、Peeweee などが含まれます。この記事では、SQLAlchemy を例として使用して説明します。

2. 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 です。

3. データ モデルの定義
データ操作に 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" を指定します。データモデルでは、各フィールドの型などを定義できます。

4. データ テーブルの作成
データ操作に ORM を使用する前に、対応するデータベース テーブルを作成する必要があります。次のコードを main.py ファイルに追加できます。

Base.metadata.create_all(bind=engine)
ログイン後にコピー

上記のコードは、データベース内に定義されたすべてのデータ モデルに対応するテーブルを作成します。

5. データ操作の例
ユーザー モデルを例として、一般的なデータ操作の例をいくつか示します。

  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. Update 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 を介してデータベースに保存します。

  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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!