ホームページ > バックエンド開発 > Python チュートリアル > FastAPIでデータベース接続とトランザクション処理を実装する方法

FastAPIでデータベース接続とトランザクション処理を実装する方法

PHPz
リリース: 2023-07-30 11:45:13
オリジナル
2766 人が閲覧しました

FastAPI でデータベース接続とトランザクション処理を実装する方法

はじめに:
Web アプリケーションの急速な開発に伴い、データベース接続とトランザクション処理が非常に重要なトピックになっています。 FastAPI は、その速度と使いやすさで開発者に愛されている高性能 Python Web フレームワークです。この記事では、信頼性が高く効率的な Web アプリケーションを構築するために役立つ、FastAPI でデータベース接続とトランザクションを実装する方法を紹介します。

パート 1: データベース接続
FastAPI では、SQLAlchemy や Tortoise-ORM などのさまざまなデータベース接続ツールを使用できます。 SQLAlchemy を例として使用して説明します。

  1. SQLAlchemy と MySQL ドライバーをインストールする
    まず、SQLAlchemy ライブラリと対応する MySQL ドライバーをインストールする必要があります。次のコマンドを使用してインストールできます。
pip install sqlalchemy
pip install mysql-connector-python
ログイン後にコピー
  1. データベース接続の作成
    FastAPI アプリケーションでは、メイン アプリケーションでデータベース接続を作成し、プロセス中のルート処理に挿入できます。以下はサンプル コードです:
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 でトランザクションを使用する方法を示すサンプル コードです。

  1. 依存関係を使用したデータベース セッションの挿入
    この例で前に作成した get_db 依存関係関数を引き続き使用し、ルート ハンドラーにデータベース セッションを挿入します。
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 という関数を呼び出します。

  1. トランザクション処理の実装
    次に、create_user 関数の例のコードを示します。これは、データベース セッションでトランザクション処理を使用する方法を示しています。上記のコードでは、まず db.begin() ステートメントを使用してトランザクションを開始します。次に、db.add() ステートメントを使用して、ユーザー オブジェクトをデータベース セッションに追加します。次に、db.commit() ステートメントを使用してトランザクションをデータベースにコミットします。コミットプロセス中にエラーが発生した場合、db.rollback() ステートメントを使用してトランザクションをロールバックします。最後に、db.refresh() ステートメントを使用してユーザー オブジェクトを更新し、データベースで生成された主キー値が含まれていることを確認します。
結論:

この記事では、FastAPI でデータベース接続とトランザクション処理を実装する方法を紹介しました。まず SQLAlchemy を使用してデータベース接続を作成し、次に依存関係関数を使用してデータベース セッションをルート ハンドラーに挿入しました。次に、データベース セッション内でトランザクションを使用して、データベース操作のアトミック性と一貫性を保証する方法を示しました。これらのテクニックを学び実践することで、信頼性が高く効率的な Web アプリケーションを構築できるようになります。

以上がFastAPIでデータベース接続とトランザクション処理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート