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の機能を最大限に活用してみてね。
この記事へのコメントはありません。