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. データ操作の例
ユーザー モデルを例として、一般的なデータ操作の例をいくつか示します。
すべてのユーザーのクエリ
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
上記のコードでは、受信したユーザー データをデータベースに保存して返します。
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 を介してデータベースに保存します。
ユーザーの削除
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 サイトの他の関連記事を参照してください。