SQLAlchemyはPythonの最もよく使われるORM(Object Relational Mapper)です。SQLを直接書かずにPythonのオブジェクトとしてDBを操作できます。FastAPIと組み合わせた実践的な使い方を解説します。
SQLAlchemyのインストール
pip install sqlalchemyモデルの定義とDB接続
from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.orm import DeclarativeBase, Session
from datetime import datetime
DATABASE_URL = "sqlite:///./app.db"
engine = create_engine(DATABASE_URL)
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String, nullable=False)
email = Column(String, unique=True, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
Base.metadata.create_all(engine)CRUD操作
with Session(engine) as session:
# 作成
user = User(name="Taro", email="taro@example.com")
session.add(user)
session.commit()
# 取得
users = session.query(User).all()
user = session.query(User).filter(User.id == 1).first()
# 更新
user.name = "Jiro"
session.commit()
# 削除
session.delete(user)
session.commit()FastAPIとの連携
from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
app = FastAPI()
def get_db():
with Session(engine) as session:
yield session
@app.get("/users")
def list_users(db: Session = Depends(get_db)):
return db.query(User).all()まとめ
- ORMはSQLを書かずにPythonオブジェクトでDBを操作する仕組み
- Baseを継承してクラスを定義するだけでテーブルを作成できる
- FastAPIのDependsでDBセッションを各エンドポイントに注入できる



コメント