FastAPI でデータベース接続とトランザクション処理を実装する方法
はじめに:
Web アプリケーションの急速な開発に伴い、データベース接続とトランザクション処理が非常に重要なトピックになっています。 FastAPI は、その速度と使いやすさで開発者に愛されている高性能 Python Web フレームワークです。この記事では、信頼性が高く効率的な Web アプリケーションを構築するために役立つ、FastAPI でデータベース接続とトランザクションを実装する方法を紹介します。
パート 1: データベース接続
FastAPI では、SQLAlchemy や Tortoise-ORM などのさまざまなデータベース接続ツールを使用できます。 SQLAlchemy を例として使用して説明します。
pip install sqlalchemy pip install mysql-connector-python
from fastapi import Depends, FastAPI from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm.session import Session app = FastAPI() SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://user:password@localhost/db_name" engine = create_engine( SQLALCHEMY_DATABASE_URL, pool_size=10, max_overflow=20 ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() async def get_db() -> Session: try: db = SessionLocal() yield db finally: db.close()
上記のコードでは、最初にデータベース接続の URL を作成し、次に SQLAlchemy の create_engine 関数を使用してデータベース エンジンを作成します。次に、データベース セッションを維持するための SessionLocal クラスを定義します。最後に、各リクエスト ハンドラーで使用するデータベース セッション インスタンスを返す依存関係関数 get_db を作成します。
パート 2: トランザクション処理
FastAPI では、トランザクション処理を使用してデータベース操作の原子性と一貫性を確保できます。以下は、FastAPI でトランザクションを使用する方法を示すサンプル コードです。
from fastapi import Depends, FastAPI from sqlalchemy.orm import Session from .models import User from .crud import create_user from .database import get_db app = FastAPI() @app.post("/users/") async def create_user_handler(user: User, db: Session = Depends(get_db)): return create_user(db=db, user=user)
上記のコードでは、ユーザー オブジェクトとデータベース セッションをパラメーターとして受け入れるルート ハンドラー create_user_handler を定義します。このハンドラーでは、データベースに新しいユーザーを作成する create_user という関数を呼び出します。
この記事では、FastAPI でデータベース接続とトランザクション処理を実装する方法を紹介しました。まず SQLAlchemy を使用してデータベース接続を作成し、次に依存関係関数を使用してデータベース セッションをルート ハンドラーに挿入しました。次に、データベース セッション内でトランザクションを使用して、データベース操作のアトミック性と一貫性を保証する方法を示しました。これらのテクニックを学び実践することで、信頼性が高く効率的な Web アプリケーションを構築できるようになります。
以上がFastAPIでデータベース接続とトランザクション処理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。