カテゴリ: 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のプロパティ(@property)の使い方を完全ガイド!初心者でも理解できるゲッターとセッター
New2
Python
Pythonの例外処理をやさしく解説!初心者でもわかるtry-exceptの基本と使い方
New3
Python
Pythonで例外メッセージを取得する方法を徹底解説!初心者でも理解できるExceptionオブジェクト入門
New4
PHP
PHPで配列をJSON形式に変換する方法!初心者でもわかるjson_encodeとjson_decodeの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.2
Java&Spring記事人気No2
Python
PythonのMixin(ミックスイン)を完全ガイド!初心者でもわかるクラス再利用の基本
No.3
Java&Spring記事人気No3
PHP
PHPのコマンドライン引数を完全ガイド!初心者でもわかるCLI引数の取得と処理($argv・getopt)
No.4
Java&Spring記事人気No4
Python
Pythonのloggingモジュール入門!初心者でもできるエラーログの記録方法をやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.6
Java&Spring記事人気No6
Python
PythonでHello World!最初のプログラムを作ってみよう【初心者向け完全ガイド】
No.7
Java&Spring記事人気No7
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.8
Java&Spring記事人気No8
Python
PythonでPostgreSQLを操作する方法!psycopg2の基本と実践を初心者向けに解説