スポンサーリンク

【初心者向け】SQLAlchemyとは?Pythonで簡単にDB操作できるORM入門

Python入門
  1. 1. はじめに|SQLAlchemyってなに?なぜ使うの?
  2. 2. ORMとは?SQLを使わないデータベース操作
    1. まず、データベースと会話する方法=SQL
    2. ORMは「Python語」でデータベースと話せる通訳さん
    3. ORMを使うと何がうれしいの?
  3. 3. SQLAlchemyのインストール方法
    1. まずはPythonが使える状態かチェック!
    2. インストールのコマンドはこれだけ!
    3. 確認してみよう:ちゃんとインストールできたかな?
    4. SQLiteも一緒に使えるよ
  4. 4. SQLAlchemyの基本構成と用語解説
    1. ① Engine(エンジン):データベースのエンジンを起動!
    2. ② Session(セッション):会話のコントロールセンター
    3. ③ Base(ベース):モデルの設計図のもと
    4. ④ Model(モデル):Pythonで書くデータベースのテーブル
    5. まとめ:構成のイメージ図
  5. 5. 【実践】PythonでSQLAlchemyを使った基本操作
    1. 🌱 事前準備:おさらいコード
    2. 📝 データを追加(Insert)
    3. 🔍 データを取得(Select)
    4. ✏️ データを更新(Update)
    5. 🗑️ データを削除(Delete)
    6. ✅ まとめ:たったこれだけでDB操作が自由自在!
  6. 6. Flaskと組み合わせたアプリ例(簡易)
    1. 🌐 Flaskってなに?
    2. 🚀 Flask × SQLAlchemy の連携図
    3. 🛠️ 最小構成のFlask + SQLAlchemyアプリ
    4. 🧪 試してみよう!
    5. 👍 FlaskとSQLAlchemyの相性は最高!
  7. 7. よくあるエラーとその対処法
    1. ❌ NoSuchTableError:テーブルがないよ!
    2. ❌ IntegrityError:データに問題があるよ!
    3. ❌ Sessionが閉じている・使いまわしすぎ!
    4. 🧘 エラーは「怖いもの」じゃない!
  8. 8. まとめ|SQLAlchemyでDB操作がもっと身近に
    1. 🔑 この記事で学んだこと(おさらい)
    2. 🚀 これからのステップ
    3. 💬 最後にひとこと
    4. 🔗 あわせて読みたい
  9. よくある質問(Q&A)
    1. 関連投稿:

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という名前のテーブル」と、その中に「idname」という列(カラム)を作ることができます。


まとめ:構成のイメージ図

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)

🧪 試してみよう!

  1. 上のコードを app.py というファイルに保存
  2. ターミナルで python app.py を実行
  3. ブラウザで 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つのキーワード
     → EngineSessionBaseModel
  • 実践編:データの追加・取得・更新・削除
     → session を使って簡単に操作!
  • Flaskとの連携
     → Webアプリでも使える!しかも相性バツグン!
  • よくあるエラーの対処法
     → 「怖いメッセージ」は読み解くとヒントがいっぱい

🚀 これからのステップ

SQLAlchemyをマスターすると、次のような開発にもチャレンジできます!

  • ユーザー登録機能付きのWebアプリを作る
  • タスク管理ツールを開発する
  • データを自動で記録してグラフ化するツールを作る など

データを扱えるようになると、Pythonの世界がぐーんと広がりますよ!


💬 最後にひとこと

「Pythonを学んだけど、次に何を作ればいいかわからない」
そんなときは、データベースと仲良くなるのが一番です!

SQLAlchemyはその第一歩にぴったりの相棒。
このページをブックマークして、ぜひ何度も参考にしてくださいね😊


🔗 あわせて読みたい


よくある質問(Q&A)

Q
SQLAlchemyって無料ですか?
A

はい!オープンソースなので無料で使えます。

Q
SQLAlchemyを使えばSQLの勉強は不要ですか?
A

最初は不要ですが、後でSQLの基本を知っておくとさらに理解が深まります。

Q
SQLAlchemyとDjangoのORM、どちらがおすすめ?
A

FlaskなどのシンプルなWebアプリにはSQLAlchemyが向いています。Djangoを使うならDjango ORMがセットで使いやすいです。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク