こんにちは!この記事では、Pythonでデータベース操作を便利にするライブラリ「SQLAlchemy」について、初心者にもわかりやすく解説します。
✅ SQLAlchemyとは?
SQLAlchemy(エスキューエル・アルケミー)は、Pythonでデータベース操作を抽象化するライブラリです。
SQL文を書かなくても、Pythonのコードだけでデータベースを操作できるようになります。
簡単に言えば「PythonでSQLを書かずにSQLを使える魔法」のようなもの!
🧱 2つの使い方がある
SQLAlchemyには主に2つのレベルがあります:
モード | 説明 | 難易度 |
---|---|---|
Core | 生SQLに近い書き方。SQLを抽象化して扱う。 | 中級者向け |
ORM(Object Relational Mapper) | クラスとテーブルを1対1でマッピング。Djangoっぽい。 | 初心者でも扱いやすい ✅ |
この記事では、初心者に優しい ORMモード を中心に紹介します!
🔧 インストール方法
pip install sqlalchemy
DBドライバも一緒に入れます(例:SQLiteやPostgreSQL)
pip install sqlite3 # SQLiteはPythonに標準で入ってるので省略可
pip install psycopg2 # PostgreSQL用
📄 モデル定義(PythonクラスとDBテーブルを対応させる)
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
→ このクラスを書くだけで、SQLのテーブル定義が完了します。
🚀 DBに接続してテーブルを作る
engine = create_engine('sqlite:///mydb.sqlite3')
Base.metadata.create_all(engine)
mydb.sqlite3
というSQLiteファイルが作られ、中に users
テーブルができます。
✍️ データの追加・取得(セッションを使う)
from sqlalchemy.orm import Session
# セッション開始
session = Session(bind=engine)
# ユーザーの追加
new_user = User(name="Taro", email="taro@example.com")
session.add(new_user)
session.commit()
# ユーザーの取得
users = session.query(User).all()
for user in users:
print(user.name, user.email)
✅ よくある使い方(チートシート)
操作 | コード例 |
---|---|
データ追加 |
session.add(obj) → session.commit()
|
データ取得 | session.query(User).all() |
条件付き検索 | session.query(User).filter(User.name == "Taro").first() |
更新 |
user.name = "Jiro" → session.commit()
|
削除 |
session.delete(user) → session.commit()
|
💡 こんなときに便利!
- 複雑なSQLクエリをPythonで管理したい
- データベースの変更に強く、可読性の高いコードが書きたい
- Djangoより自由度が高いORMが欲しい
- FastAPIと一緒に使ってAPI + DBを連携させたい
🧠 まとめ
項目 | 内容 |
---|---|
ライブラリ名 | SQLAlchemy |
主な機能 | DB操作の抽象化(ORM) |
よく使う場面 | API開発、データ処理、自作アプリ |
初心者向け機能 | ORMモード(クラスベースでDB設計) |
📚 さらに学びたい方へ
- 公式ドキュメント:https://docs.sqlalchemy.org/
- 実践例:FastAPI + SQLAlchemy + Alembic(マイグレーション)
- async対応:
SQLModel
やAsyncSession
の活用もおすすめ