1. はじめに|SQLAlchemyってなに?なぜ使うの?
Pythonでプログラミングをしていると、
「データを保存したい」「ユーザー情報を管理したい」
そんな場面に必ず出てくるのが データベース(DB) です。
たとえば、
- ブログの記事一覧
- ユーザーの登録情報
- 商品データや履歴情報
こうした大量のデータを安全に保存・管理する仕組みがデータベースです。
そして、Pythonからデータベースを簡単に操作できる代表的なライブラリが
SQLAlchemy(エスキューエル・アルケミー) です。
SQLAlchemyは、
「Pythonでデータベース操作をしたい初心者」にとても人気のある ORM(Object Relational Mapper) ライブラリで、
- SQLをゴリゴリ書かなくても
- Pythonのコードだけで
- データの追加・取得・更新・削除ができる
という大きな特徴があります。
「SQLって何…?」「データベースは難しそう…」
そう感じている方でも大丈夫です。
この記事では、SQLAlchemyとは何か? という基本から、
なぜ初心者におすすめなのか を、できるだけ噛み砕いて解説していきます。
PythonでWebアプリ開発やデータ管理を始めたい方は、
まずここから一緒に理解していきましょう 🙂
2. ORMとは?SQLを使わないデータベース操作
さて、「SQLAlchemyはPythonでDB操作ができるよ!」と紹介しましたが、ここで登場するキーワードが「ORM(オーアールエム)」という考え方です。
まず、データベースと会話する方法=SQL
ふつう、データベースに「データを保存したいな〜」とか「この条件に合うデータを出して!」ってお願いするときは、
SQL(Structured Query Language)という特別な言葉を使わないといけません。
たとえば、SQLで「ユーザーの名前を取り出して!」ってお願いするときは、こんな感じのコードになります。
SELECT name FROM users;
…うーん、ちょっととっつきにくいですよね。
ORMは「Python語」でデータベースと話せる通訳さん
そこで登場するのが「ORM(Object Relational Mapping)」というアイデアです。
これは何かというと…
Pythonのクラスやオブジェクトと、データベースのテーブルや行を「つなぐ」しくみ。
つまり、SQLのかわりにPythonのコードだけでデータベースとやりとりできるようにするものなんです。
たとえば、さっきの「名前を取り出して!」という処理も、SQLAlchemyならこう書けます。
session.query(User.name).all()
これなら、Pythonの文法を少し知っていれば理解しやすいですよね!
ORMを使うと何がうれしいの?
ORMにはうれしいポイントがたくさんあります:
- SQL文を覚えなくてもデータベースを使える
- Pythonコードだけで書けるので、統一感がある
- データベースの種類(SQLiteやPostgreSQLなど)をあとで変えても、コードを大きく直さずに済む
特にPythonを始めたばかりの方にとっては、「ひとつの言語(Python)だけで全部できる」って、とっても安心ですよね。

ということで、次の章では実際にSQLAlchemyを使うために、インストールのやり方を紹介していきます!
これから一緒に、Pythonでデータベースを使いこなしていきましょう😊
3. SQLAlchemyのインストール方法
さあ、いよいよSQLAlchemyを実際に使っていく準備をしていきましょう!
とはいえ、やることはとってもシンプルです😊
まずはPythonが使える状態かチェック!
SQLAlchemyはPythonのライブラリなので、まずはPythonがインストールされている必要があります。
まだPythonを入れていない人は、先にこちらの記事をチェックしてね👇
【Python入門1】WindowsでPythonを始めよう!IDLEのインストールと基本の使い方ガイド
インストールのコマンドはこれだけ!
Pythonが使えるようになったら、次はSQLAlchemyのインストールです。
コマンドプロンプト(Windows)やターミナル(Mac)で、以下のコマンドを打ってください。
pip install SQLAlchemy
「pip(ピップ)」はPythonのライブラリをインストールする魔法の道具みたいなものです。
これだけで、SQLAlchemyがあなたのパソコンに入ります。かんたんですね!
確認してみよう:ちゃんとインストールできたかな?
インストールが終わったら、Pythonを起動して、次のコードを打ってみましょう。
import sqlalchemy
print(sqlalchemy.__version__)
これでバージョン情報が表示されたら成功です!
「おおっ!もうSQLAlchemyが使えるようになった!」ってちょっと感動しますよね。
SQLiteも一緒に使えるよ
ちなみに、SQLAlchemyはさまざまなデータベースに対応していますが、初心者さんには**SQLite(エスキューライト)**という組み込み型のデータベースがおすすめです。
なぜなら…
- 特別な設定いらず
- ファイル1つで動く
- SQLAlchemyに標準対応してる
つまり、**すぐに使い始められる!**ってことなんです。

次は「SQLAlchemyの基本構成と用語解説」に進みます!
「Engine?Session?Baseってなにそれ?」という名前がたくさん出てきますが、心配いりません!一つひとつ、ゆっくり丁寧に解説していきますね👍
4. SQLAlchemyの基本構成と用語解説
SQLAlchemyをインストールできたら、次はいよいよ実際にデータベースとやりとりする準備をしていきます!
でもその前に…ちょっとだけ知っておいてほしい「4つの重要キーワード」があるんです。
それがこちら!
Engine(エンジン)Session(セッション)Base(ベース)Model(モデル)
「えっ、急に専門用語っぽいのが…💦」
大丈夫!ひとつずつ、やさしく解説していきますね。
① Engine(エンジン):データベースのエンジンを起動!
まず最初に作るのが Engine。
これは**データベースとのつながり口(入口)**みたいなものです。
たとえば、SQLiteならこんな感じで作ります。
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sample.db')
この1行で、Pythonとデータベース(ここではsample.dbというファイル)をつなぐ準備ができちゃいます!
② Session(セッション):会話のコントロールセンター
Sessionは、データベースとのやり取りをまとめて管理する役割をもつ存在です。
たとえばこんなふうに書きます👇
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
このsessionを使って、データの追加や取得ができるようになります。
イメージとしては、「お店での注文窓口」みたいな感じですね🍔
③ Base(ベース):モデルの設計図のもと
続いて Base。これは**テーブルの土台(ひな型)**になります。
SQLAlchemyではこのBaseを使って、自分だけのテーブル(モデル)を定義していきます。
from sqlalchemy.orm import declarative_base
Base = declarative_base()
このBaseをもとに、新しい「クラス(モデル)」を作っていきます。
④ Model(モデル):Pythonで書くデータベースのテーブル
最後は Model。
これはデータベースの「テーブル(表)」を、Pythonのクラスで表現したものです。
こんなふうに書きます:
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
このコードで「usersという名前のテーブル」と、その中に「idとname」という列(カラム)を作ることができます。
まとめ:構成のイメージ図
Python(Modelクラス) ↔ Base(土台)
↕
Session(やりとりの窓口)
↕
Engine(データベースとの接続)
↕
SQLiteなどのDB
これら4つの役割を知っておくと、SQLAlchemyを使うときの全体の流れがとってもスムーズになりますよ👍

次はいよいよ実践編!
**「PythonでSQLAlchemyを使った基本操作」**をやってみましょう。
データを追加したり、読み取ったり、一緒に手を動かしながらやっていきましょう😊
5. 【実践】PythonでSQLAlchemyを使った基本操作
ここからは、いよいよ手を動かしてSQLAlchemyを体験していきます!
今回は、次のような簡単な「ユーザー管理テーブル」を例にして、基本操作(追加・取得・更新・削除)をやってみましょう。
🌱 事前準備:おさらいコード
まずは前の章で紹介した内容をまとめて1つにします。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker
# 1. データベースと接続(sample.dbというSQLiteファイル)
engine = create_engine('sqlite:///sample.db')
# 2. モデルのベースクラスを作る
Base = declarative_base()
# 3. モデル(テーブル)の定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
# 4. テーブルを作成
Base.metadata.create_all(engine)
# 5. セッション作成
Session = sessionmaker(bind=engine)
session = Session()
これで準備完了です!
📝 データを追加(Insert)
新しいユーザーをデータベースに追加してみましょう!
new_user = User(name="たろう")
session.add(new_user)
session.commit()
add() で登録し、commit() で「保存!」の合図を出します。
💡 裏側では自動的に INSERT INTO users (name) VALUES ('たろう') が実行されてます!
🔍 データを取得(Select)
今追加したユーザーを読み取ってみましょう!
users = session.query(User).all()
for user in users:
print(f"ID: {user.id}, 名前: {user.name}")
これでデータベースに登録されたユーザーの一覧が表示されます!
✏️ データを更新(Update)
たろうさんの名前を「じろう」に変更してみましょう!
user = session.query(User).filter_by(name="たろう").first()
user.name = "じろう"
session.commit()
filter_by() で条件を指定してデータを取り出し、プロパティを変更して commit() で反映します。
🗑️ データを削除(Delete)
最後に、このユーザーを削除してみましょう。
user = session.query(User).filter_by(name="じろう").first()
session.delete(user)
session.commit()
とても簡単に削除できますね!
✅ まとめ:たったこれだけでDB操作が自由自在!
操作のイメージはこちら:
| 操作 | メソッド | 説明 |
|---|---|---|
| 追加 | session.add() | 新しいデータ追加 |
| 取得 | session.query() | データを読む |
| 更新 | user.◯ = 値 | 値を書き換える |
| 削除 | session.delete() | データを削除する |
| 保存 | session.commit() | 操作を確定する |

次は「Flaskと組み合わせたアプリ例(簡易)」を紹介します!
PythonでWebアプリを作ってみたい人は、ここからが超おもしろくなりますよ✨
6. Flaskと組み合わせたアプリ例(簡易)
ここまでで、PythonからSQLAlchemyを使ってデータベースを操作できるようになりましたね!
でも実は、SQLAlchemyが真価を発揮するのはWebアプリを作るときなんです。
そこで今回は、Pythonで人気のWebフレームワーク「Flask(フラスク)」とSQLAlchemyを組み合わせた簡単なアプリ例をご紹介します!
🌐 Flaskってなに?
Flaskは、PythonでWebサイトやAPIを作るための超シンプルで軽量なフレームワークです。
たった数行で「Webサーバー」が立ち上がるので、初心者にも大人気!
pip install flask
このコマンドでインストールできます。
🚀 Flask × SQLAlchemy の連携図
ブラウザ ⇄ Flask ⇄ SQLAlchemy ⇄ SQLite(データベース)
つまり、ブラウザからアクセスされたときに、FlaskがSQLAlchemyを使ってデータを読み書きし、その結果を表示する流れになります。
🛠️ 最小構成のFlask + SQLAlchemyアプリ
from flask import Flask, request
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker
# Flaskアプリの準備
app = Flask(__name__)
# SQLAlchemyの準備
engine = create_engine('sqlite:///flask_sample.db')
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
# モデル定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
Base.metadata.create_all(engine)
# ルートにアクセスしたときの処理
@app.route('/')
def index():
users = session.query(User).all()
return '<br>'.join([f'{u.id}: {u.name}' for u in users])
# 名前を追加するURL(例:/add?name=たろう)
@app.route('/add')
def add_user():
name = request.args.get('name')
if name:
user = User(name=name)
session.add(user)
session.commit()
return f'追加しました:{name}'
return '名前を指定してください(例:/add?name=たろう)'
if __name__ == '__main__':
app.run(debug=True)
🧪 試してみよう!
- 上のコードを
app.pyというファイルに保存 - ターミナルで
python app.pyを実行 - ブラウザで
http://localhost:5000/にアクセス!
さらに、次のURLを試してみてください👇
http://localhost:5000/add?name=たろう→ ユーザーを追加http://localhost:5000/→ ユーザー一覧が表示される
👍 FlaskとSQLAlchemyの相性は最高!
このように、FlaskとSQLAlchemyを組み合わせることで、「Webアプリでデータを管理する仕組み」がとっても簡単に作れます。
たとえば…
- ブログ投稿アプリ
- タスク管理ツール
- ユーザー管理システム
など、いろんなアプリを作れるようになりますよ!
7. よくあるエラーとその対処法
さて、SQLAlchemyに慣れてきたころに、よく出くわすのが「エラー」です。
「コードは合ってるはずなのに動かない…」
「なんか見たことないメッセージが出てきた…💦」
そんなときも、あわてず落ち着いて、ひとつずつ対処していきましょう!
ここでは初心者がよく出会う3つの代表的なエラーとその対策をご紹介します。
❌ NoSuchTableError:テーブルがないよ!
エラーメッセージ例:
sqlalchemy.exc.NoSuchTableError: users
原因:Base.metadata.create_all(engine) を実行せずにテーブルを使おうとしたときに出るエラーです。
対処法:
テーブルがちゃんと作られているか確認しましょう!
Base.metadata.create_all(engine)
このコードを忘れずに、モデル定義のあとに書いてくださいね。
❌ IntegrityError:データに問題があるよ!
エラーメッセージ例:
sqlalchemy.exc.IntegrityError: UNIQUE constraint failed: users.id
原因:
主キー(IDなど)が重複していたり、None になっていたりすると発生します。
対処法:
idを自動で割り当てたいときは、手動で設定せずにSQLAlchemyに任せましょう。- 同じデータを何回も追加していないか見直しましょう。
user = User(name="たろう") # IDは指定しないのが基本!
❌ Sessionが閉じている・使いまわしすぎ!
エラーメッセージ例:
sqlalchemy.orm.exc.DetachedInstanceError
原因:
古い session を使いまわしたり、commit() したあとにデータを使おうとすると出ることがあります。
対処法:
基本的に、データを扱うたびに新しい session を作るのが安全です。
# 新しいセッションを毎回作る
session = Session()
FlaskのようなWebアプリでは、リクエストごとにsessionを開いて閉じる設計を心がけましょう!
🧘 エラーは「怖いもの」じゃない!
エラーメッセージって最初は怖く感じるかもしれませんが、ちゃんと読めばヒントだらけです!
NoSuchTableError→ テーブルがないIntegrityError→ データの整合性に問題ありDetachedInstanceError→ セッションが切れてる
というふうに、「どこで何がうまくいってないか」を教えてくれているんです。

次はまとめとして、ここまで学んだことを振り返ってみましょう😊
SQLAlchemyの使い方をしっかり身につけたあなたは、もう立派なPythonエンジニアの仲間入りです!
8. まとめ|SQLAlchemyでDB操作がもっと身近に
ここまで読んでくださって、ありがとうございます!
Pythonでデータベースを扱うと聞くと、
「なんだか難しそう…」「SQLってよくわからないし…」と思う方が多いかもしれません。
でも、SQLAlchemyを使えばそんな不安は吹き飛びます!
🔑 この記事で学んだこと(おさらい)
- SQLAlchemyとは?
→ Pythonだけでデータベースを操作できる便利なツール! - ORMのしくみ
→ SQLを知らなくても、Pythonのクラスでテーブルが作れる! - 基本構成の4つのキーワード
→Engine、Session、Base、Model - 実践編:データの追加・取得・更新・削除
→sessionを使って簡単に操作! - Flaskとの連携
→ Webアプリでも使える!しかも相性バツグン! - よくあるエラーの対処法
→ 「怖いメッセージ」は読み解くとヒントがいっぱい
🚀 これからのステップ
SQLAlchemyをマスターすると、次のような開発にもチャレンジできます!
- ユーザー登録機能付きのWebアプリを作る
- タスク管理ツールを開発する
- データを自動で記録してグラフ化するツールを作る など
データを扱えるようになると、Pythonの世界がぐーんと広がりますよ!
💬 最後にひとこと
「Pythonを学んだけど、次に何を作ればいいかわからない」
そんなときは、データベースと仲良くなるのが一番です!
SQLAlchemyはその第一歩にぴったりの相棒。
このページをブックマークして、ぜひ何度も参考にしてくださいね😊
🔗 あわせて読みたい
よくある質問(Q&A)
- QSQLAlchemyって無料ですか?
- A
はい!オープンソースなので無料で使えます。
- QSQLAlchemyを使えばSQLの勉強は不要ですか?
- A
最初は不要ですが、後でSQLの基本を知っておくとさらに理解が深まります。
- QSQLAlchemyとDjangoのORM、どちらがおすすめ?
- A
FlaskなどのシンプルなWebアプリにはSQLAlchemyが向いています。Djangoを使うならDjango ORMがセットで使いやすいです。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。