データベース

FastAPIとSQLAlchemyのやさしい使い方ガイド

FastAPIとSQLAlchemyってなに?

ナカイ君: FastAPIとSQLAlchemyの使い方をわかりやすく教えてほしいな。

世界のアオキ: OK、まず「FastAPI」は、WebアプリやAPIを作るためのモダンで高速なフレームワークだよ。「SQLAlchemy」は、データベースをPythonのコードで扱えるようにするライブラリだね。

これらを組み合わせると、効率的にデータベース操作ができるWebアプリを作れるんだ。

ナカイ君: もっと具体的に教えてくれない?

世界のアオキ: もちろんだよ。FastAPIでAPIを作り、SQLAlchemyを使ってデータベースからデータを取得したり、データを保存したりできる。この組み合わせは、Web開発において強力で、コードもシンプルになるんだ。

基本的なコードの書き方

ナカイ君: わかりやすいコードがあれば教えてほしいな。

世界のアオキ: まずは簡単なFastAPIアプリと、SQLAlchemyでのデータベースモデルの定義から始めよう。

from fastapi import FastAPI
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

app = FastAPI()
Base = declarative_base()

# データベース接続の設定
DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# モデルの定義
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)

# データベースのテーブルを作成
Base.metadata.create_all(bind=engine)





FastAPIでのデータ操作

ナカイ君: 具体的にはどうやって使うの?

世界のアオキ: こうやってデータを追加したり、取得したりするんだよ。例えば、ユーザーを追加するAPIと、ユーザーのリストを取得するAPIはこんな感じ。

from fastapi import Depends, HTTPException
from sqlalchemy.orm import Session

# 依存関係
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

@app.post("/users/")
def create_user(name: str, db: Session = Depends(get_db)):
    db_user = User(name=name)
    db.add(db_user)
    db.commit()
    db.refresh(db_user)
    return db_user

@app.get("/users/")
def read_users(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
    users = db.query(User).offset(skip).limit(limit).all()
    return users





ナカイ君: 他のパターンがあれば教えてほしいな。

世界のアオキ: 他にも、ユーザーをIDで検索するAPIを作ることができるよ。それはこんな感じになる。

@app.get("/users/{user_id}")
def read_user(user_id: int, db: Session = Depends(get_db)):
    db_user = db.query(User).filter(User.id == user_id).first()
    if db_user is None:
        raise HTTPException(status_code=404, detail="User not found")
    return db_user

ナカイ君: そうやって使えばいいんだね。

世界のアオキ: そうだね。ただ、実際に使うときは、データベースの設定やモデルの定義に注意する必要があるよ。そして、SQLAlchemyのセッション管理も大切だからね。しっかりとドキュメントを読んで、理解を深めていこう。

ナカイ君: わかった、ありがとう!

まとめ

FastAPIとSQLAlchemyを使うことで、Pythonで効率的にWebアプリやAPIを作ることができるようになる。この記事では、FastAPIでの基本的なAPIの作り方と、SQLAlchemyでのデータベース操作の方法を紹介した。

コードの例を参考にしながら、自分のプロジェクトに応用してみるといい。最初はシンプルな操作から始めて、徐々に複雑な機能を追加していくことをおすすめするよ。

ドキュメントをよく読み、FastAPIとSQLAlchemyの機能を最大限に活用してみてね。


関連記事一覧 (一部広告あり)

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


最近の記事

アーカイブ

  1. オンライン教材

    ChatGPTをビジネス活用する講座をリリースしました【Udemy】
  2. オンライン教材

    【AWS】【初心者向け】インフラの基礎からわかる講座をリリースしました【Udem…
  3. オンライン教材

    【ChatGPT】エンジニア編をリリースしました
  4. オンライン教材

    【React】初心者向け講座をリリースしました【MUI】【Udemy】
  5. バックエンド

    【Laravel第4弾】Vue.js3(CompositionAPI+Scrip…
PAGE TOP