カテゴリ: Python 更新日: 2026/03/30

PythonのORMとは?SQLAlchemyを使ったデータベース管理を初心者向けに徹底解説

PythonのORMとは?SQLAlchemyを使ったデータベース管理
PythonのORMとは?SQLAlchemyを使ったデータベース管理

先生と生徒の会話形式で理解しよう

生徒

「Pythonでデータベースを使うとき、SQLを書かなくても操作できる方法があるって聞いたんですが本当ですか?」

先生

「ありますよ。PythonではORM(オーアールエム)という仕組みを使うと、プログラムの言葉でデータベースを扱えます。その代表例がSQLAlchemy(エスキューエルアルケミー)です。」

生徒

「データベースって難しそうなイメージがあります…。」

先生

「大丈夫です。パソコンを触ったことがない人でもイメージできるように、たとえ話を交えながら説明していきます。」

1. ORM(オーアールエム)とは何か?

1. ORM(オーアールエム)とは何か?
1. ORM(オーアールエム)とは何か?

ORMとは「Object Relational Mapping(オブジェクト リレーショナル マッピング)」の略です。難しく聞こえますが、考え方はとてもシンプルです。データベースを「表がたくさん並んだノート」、Pythonのプログラムを「文章を書く人」と考えてみてください。

本来、データベースに保存された情報を取り出すにはSQL(エスキューエル)という専用の言葉を書かなければなりません。ORMを使うと、そのSQLを直接書かずに、Pythonの命令だけでデータの保存・検索・更新・削除ができます。つまり「翻訳機」のような役割をしてくれるのがORMです。

2. PythonでORMを使うメリット

2. PythonでORMを使うメリット
2. PythonでORMを使うメリット

PythonでORMを使う最大のメリットは「難しいSQLを覚えなくてもよい」点です。プログラミング未経験の人にとって、SQLは新しい文法だらけでつまずきやすい部分です。

ORMを使えば、Pythonの変数やクラスを使ってデータベースを操作できます。これは「住所録を表計算ソフトで直接編集する」のではなく、「住所録アプリのボタンを押して登録する」感覚に近いです。間違いが起きにくく、読みやすいプログラムを書くことができます。

3. SQLAlchemy(エスキューエルアルケミー)とは?

3. SQLAlchemy(エスキューエルアルケミー)とは?
3. SQLAlchemy(エスキューエルアルケミー)とは?

SQLAlchemyは、Pythonで最も有名なORMライブラリです。ライブラリとは、便利な機能をまとめた道具箱のようなものです。SQLAlchemyを使うことで、SQLite、MySQL、PostgreSQLなど、さまざまなデータベースを同じ書き方で扱えます。

「Alchemy」は「錬金術」という意味で、SQLという金属をPythonという別の形に変える、というイメージから名付けられています。

4. データベースとテーブルをクラスで表す

4. データベースとテーブルをクラスで表す
4. データベースとテーブルをクラスで表す

SQLAlchemyでは、データベースのテーブルをPythonのクラスとして表現します。クラスとは「設計図」のようなものです。例えば「人」という設計図があれば、名前や年齢といった情報を持つ人を何人も作れます。


from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

この例では「users」というテーブルを「User」クラスで表しています。テーブルの列(カラム)は、クラスの中の変数として定義されています。

5. データを登録する基本操作

5. データを登録する基本操作
5. データを登録する基本操作

次に、データベースへデータを保存する方法を見てみましょう。これは「ノートに新しい情報を書き込む」イメージです。


from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("sqlite:///sample.db")
Session = sessionmaker(bind=engine)
session = Session()

user = User(name="太郎", age=20)
session.add(user)
session.commit()

ここではSQLite(エスキューライト)という軽量なデータベースを使っています。「commit」は「保存ボタン」を押すようなものです。

6. データを検索する方法

6. データを検索する方法
6. データを検索する方法

保存したデータは、条件を指定して取り出すことができます。これは「住所録から名前で探す」ような操作です。


users = session.query(User).all()

for user in users:
    print(user.name, user.age)

太郎 20

このように、SQLを書かずにPythonの命令だけで検索結果を扱えます。

7. データを更新・削除する考え方

7. データを更新・削除する考え方
7. データを更新・削除する考え方

データの更新は「書き直し」、削除は「消しゴムで消す」イメージです。SQLAlchemyでは、対象のデータを取得してから変更します。


user = session.query(User).first()
user.age = 21
session.commit()

この例では、最初のユーザーの年齢を変更しています。削除の場合も同じように対象を指定して命令します。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者がよくつまずくのは「データベースに反映されない」という点です。その原因の多くは「commitを書き忘れている」ことです。commitは「確定」の意味があり、これをしないと変更は保存されません。

また、ORMは便利ですが、裏側ではSQLが自動生成されています。そのため「何をしているか分からなくなったら、データベースは表の集まり」という基本に立ち返ることが大切です。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
PythonでREST APIを作る方法!初心者向けFastAPI入門|Python API開発の基本
New2
PHP
PHPのコード品質向上ツール完全解説!PHPStan(ピーエイチピースタン)とPHPCS(ピーエイチピーシーエス)で初心者でも安全にデバッグしよう
New3
Python
Pythonでデータベースのログを記録・監視する方法を完全解説!初心者向けデータベースログ管理入門
New4
PHP
PHPのログファイルを活用したエラートラッキング完全ガイド|初心者でもわかるPHPデバッグ入門
人気記事
No.1
Java&Spring記事人気No1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.2
Java&Spring記事人気No2
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.3
Java&Spring記事人気No3
Python
Pythonのインストール&環境構築!Windows・Mac・Linuxでの手順を初心者向けに解説
No.4
Java&Spring記事人気No4
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.5
Java&Spring記事人気No5
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.6
Java&Spring記事人気No6
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonでデータベースの接続プールを使う方法を徹底解説!初心者向けPythonデータベース接続プール入門
No.8
Java&Spring記事人気No8
PHP
PHPのPHPUnitを使った単体テスト完全ガイド!初心者でもわかるテストとデバッグ入門