カテゴリ: Python 更新日: 2026/04/08

PythonのSQLAlchemy使い方入門!初心者でもわかるインストールと初期設定

PythonのSQLAlchemyの使い方入門!インストールと初期設定
PythonのSQLAlchemyの使い方入門!インストールと初期設定

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

生徒

「Pythonでデータベースを使いたいのですが、SQLという言葉が出てきて難しそうです。もっと簡単にデータを保存する方法はありませんか?」

先生

「それなら、SQLAlchemy(エスキューエル・アルケミー)というライブラリがおすすめです。これを使えば、難しい呪文のようなSQLを書かなくても、Pythonの書き方だけでデータを操作できるんですよ。」

生徒

「Pythonの知識だけでデータベースが扱えるなんて魔法みたいですね!どうやって準備すればいいんですか?」

先生

「まずはインストールと最初の設定から順番に解説していきますね。準備はとても簡単ですよ!」

1. SQLAlchemyとは?データベースを身近にする道具

1. SQLAlchemyとは?データベースを身近にする道具
1. SQLAlchemyとは?データベースを身近にする道具

プログラミングの世界でデータを保存する場所を「データベース」と呼びます。通常、このデータベースを操作するには「SQL」という専用の言語を覚える必要があります。しかし、初心者にとって新しい言語をもう一つ覚えるのは大変な作業です。

そこで登場するのがSQLAlchemyです。これは「ORM(Object Relational Mapper)」と呼ばれる種類の道具で、データベースの表(テーブル)をPythonの「クラス」として、データの1行を「インスタンス」として扱うことができるようにしてくれます。

つまり、リストや辞書を扱うような感覚で、本格的なデータベースに情報を書き込んだり、読み出したりできるようになるのです。この仕組みを使えば、タイピングミスによるエラーを減らし、読みやすいコードを書くことができます。

2. 準備を始めよう!ライブラリのインストール方法

2. 準備を始めよう!ライブラリのインストール方法
2. 準備を始めよう!ライブラリのインストール方法

SQLAlchemyを使うためには、まず自分のパソコンにこのライブラリを取り込む必要があります。Pythonには「pip(ピップ)」という便利なパッケージ管理システムが備わっているので、コマンド一つで完了します。

Windowsの方は「コマンドプロンプト」や「PowerShell」、Macの方は「ターミナル」を開いて、以下の命令を入力してみましょう。インターネットに繋がっていれば、数十秒で準備が整います。


# SQLAlchemyをインストールするコマンド
pip install sqlalchemy

インストールが完了したら、正しく入ったか確認してみましょう。Pythonを起動して、バージョンを表示させるコードを書いてみます。エラーが出なければ成功です。


import sqlalchemy
print(sqlalchemy.__version__)

実行結果は以下のようになります(数字はインストールした時期によって異なります)。


2.0.25

3. エンジンの作成!データベースへの接続設定

3. エンジンの作成!データベースへの接続設定
3. エンジンの作成!データベースへの接続設定

SQLAlchemyで最初に行う作業は「エンジン(Engine)」の作成です。これは、Pythonプログラムとデータベースを繋ぐ「電話回線」のようなものだと考えてください。どこにデータを保存するのか、どの種類のデータベースを使うのかを指定します。

今回は、設定が最も簡単で、特別なサーバー準備が不要な「SQLite(エスキューライト)」というデータベースを使います。これは、パソコンの中に一つのファイルとしてデータが保存される仕組みです。


from sqlalchemy import create_engine

# データベースエンジンの作成
# sqlite:///sample.db は「カレントフォルダに sample.db というファイルを作る」という意味です
engine = create_engine("sqlite:///sample.db", echo=True)

print("エンジンの作成に成功しました!")

ここで出てくる echo=True という設定は、SQLAlchemyが裏側で発行しているSQL文を画面に表示してくれるデバッグ用の機能です。初心者のうちは、何が起きているか把握するために「True」にしておくのがおすすめです。

4. モデルの定義!データの設計図を作ろう

4. モデルの定義!データの設計図を作ろう
4. モデルの定義!データの設計図を作ろう

次に、どのようなデータを保存するのか「設計図」を作ります。これを「データモデリング」と呼びます。例えば、ユーザー情報を管理したい場合、「名前」や「メールアドレス」といった項目を決めます。

SQLAlchemyでは、Baseという基盤となるクラスを継承して、自分の作りたいデータの形を定義します。以下の例では、簡単な「ユーザー情報」を管理するモデルを作ってみましょう。


from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column

# すべてのモデルの土台となるBaseクラスを作成
class Base(DeclarativeBase):
    pass

# Userテーブルの設計図(モデル)
class User(Base):
    __tablename__ = "users" # データベースの中でのテーブル名
    
    id: Mapped[int] = mapped_column(primary_key=True) # 重複しない背番号
    name: Mapped[str] = mapped_column() # 名前を入れる場所
    age: Mapped[int] = mapped_column()  # 年齢を入れる場所

「Mapped」や「mapped_column」は、Pythonの型とデータベースの型を結びつける役割を持っています。これによって、Python側で「これは数値ですよ」「これは文字ですよ」と正しく認識されるようになります。

5. テーブルの作成!設計図を形にする

5. テーブルの作成!設計図を形にする
5. テーブルの作成!設計図を形にする

モデル(設計図)を作っただけでは、まだデータベースの中に表は作られていません。大工さんが図面を見て家を建てるように、SQLAlchemyに指示を出して、実際にファイルを構成させる必要があります。

先ほど作った engineBase を使って、一気にテーブルを作成しましょう。これを実行すると、指定したファイル名(sample.db)が作成され、中にデータを入れるための箱が用意されます。


# 設計図をもとに、実際のデータベースにテーブルを作成する
Base.metadata.create_all(engine)

print("データベースにテーブルが作成されました。")

この命令を実行した際、echo=True に設定していれば、画面には「CREATE TABLE users...」といった文字が流れます。これが、SQLAlchemyが自動で生成してくれたSQL文です。自分では一行もSQLを書いていないのに、データベースの構築ができたことになります。

6. セッションの準備!データのやり取りを開始

6. セッションの準備!データのやり取りを開始
6. セッションの準備!データのやり取りを開始

テーブルができたら、いよいよデータを追加したり検索したりする準備に入ります。ここで使うのが「セッション(Session)」です。セッションは、データベースとのやり取りを記録する「注文メモ」のような役割を果たします。

いきなりデータベースを書き換えるのではなく、一度セッションというメモ帳に書き溜めておき、最後に「確定(コミット)」ボタンを押すことで、まとめてデータベースへ反映される仕組みになっています。これにより、途中でエラーが起きてもデータの整合性を保つことができます。


from sqlalchemy.orm import Session

# データベースとの窓口(セッション)を開く
with Session(engine) as session:
    # ここにデータを操作する処理を書いていきます
    new_user = User(name="タロウ", age=25)
    
    # セッションに追加(まだ保存はされていない)
    session.add(new_user)
    
    # 変更を保存(ここで初めてデータベースに書き込まれる)
    session.commit()

print("新しいユーザーを登録しました!")

この with という構文を使うことで、処理が終わった後に自動的に窓口(セッション)を閉じてくれます。初心者でも扱いやすく、忘れ物を防ぐことができる安全な書き方です。

7. データの読み込み!保存した情報を取得する

7. データの読み込み!保存した情報を取得する
7. データの読み込み!保存した情報を取得する

保存したデータを取り出すのも非常に簡単です。通常は「SELECT」というSQLを使いますが、SQLAlchemyならPythonの関数を呼び出す感覚でデータを取得できます。

例えば、先ほど登録した「タロウ」さんの情報を、名前を指定して探してみましょう。セッションを通じて問い合わせを行う「select」機能を使います。


from sqlalchemy import select

with Session(engine) as session:
    # ユーザーテーブルから名前が「タロウ」の人を探す命令
    query = select(User).where(User.name == "タロウ")
    
    # 命令を実行して一人分を取得
    user = session.scalars(query).first()
    
    if user:
        print(f"見つかったユーザー: {user.name}さん({user.age}歳)")

このように、直感的にデータを扱うことができます。条件を付け加えたり、順番を並び替えたりするのも、メソッドを繋げていくだけなので非常に分かりやすいです。

8. データの更新と削除!情報のメンテナンス

8. データの更新と削除!情報のメンテナンス
8. データの更新と削除!情報のメンテナンス

最後に、一度保存したデータを変更したり、不要なデータを消したりする方法についても触れておきます。これもセッションの仕組みを理解していれば難しくありません。

データを変更する場合は、まず対象のデータを取得し、そのプロパティ(値)を書き換えてからコミットします。削除の場合は、削除したいデータを指定して消去の命令を出します。これら全ての操作が、Pythonのオブジェクト操作として完結します。


with Session(engine) as session:
    # 更新の例
    target_user = session.scalars(select(User)).first()
    if target_user:
        target_user.age = 26 # 年齢を書き換える
        session.commit()
        print("年齢を更新しました。")

    # 削除の例
    # session.delete(target_user)
    # session.commit()

これで、インストールから基本的な操作までの流れが完了しました。一見難しそうに見えるデータベース操作も、一つひとつの部品の役割を理解すれば、とても強力な味方になってくれます。まずは小さなデータから保存してみることから始めてみましょう。

まとめ

まとめ
まとめ

Pythonの強力なライブラリであるSQLAlchemy(エスキューエル・アルケミー)について、インストールから基本的な操作方法までを詳しく解説してきました。データベース操作と聞くと、黒い画面に難しいSQLコマンドを打ち込む姿を想像しがちですが、SQLAlchemyを活用することで、そのハードルを一気に下げることができます。

この記事で学んだ重要なポイントを振り返ってみましょう。まず、SQLAlchemyはORM(オブジェクト関係マッピング)という仕組みを提供しており、データベースのテーブルをPythonのクラスとして扱えるようにしてくれます。これにより、複雑なSQL文を自力で組み立てる必要がなくなり、タイピングミスによるバグを防ぐとともに、コードの可読性が格段に向上します。

環境構築と接続のポイント

導入は非常にシンプルで、pip install sqlalchemy というコマンド一つで完了します。その後、create_engine 関数を使用してデータベースへの接続路を確保します。今回は初心者の方でもすぐに試せるように、サーバー設定が不要なSQLiteを使用しました。SQLiteは、特別なソフトウェアをインストールすることなく、ローカル環境に一つのファイルとしてデータを保存できるため、学習や小規模なアプリケーション開発には最適です。

データの設計と操作のフロー

データの「設計図」となるモデル定義では、DeclarativeBase を継承したクラスを作成しました。Mappedmapped_column を使うことで、Pythonの型システムとデータベースの列(カラム)を同期させることができます。この設計図を元に Base.metadata.create_all(engine) を実行するだけで、自動的にテーブルが生成される様子は、まさにプログラミングの醍醐味と言えるでしょう。

さらに、実際のデータの追加や読み込みにはセッション(Session)という概念が不可欠です。セッションは、データベースに対する一連の操作を管理する窓口であり、commit() を呼び出すことで変更を確定させます。万が一エラーが発生しても、コミット前であればデータが壊れる心配が少ないため、安全に運用することが可能です。

実践的なサンプルプログラム

ここで、これまで学んだ内容を凝縮した、実戦で使えるサンプルプログラムを確認しておきましょう。以下のコードは、データベースの初期化からデータの登録、そして条件を指定した検索までを一括で行う流れを示しています。


from sqlalchemy import create_engine, select
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session

# 1. データベースの準備(メモリ上に作成する例)
engine = create_engine("sqlite:///:memory:", echo=True)

# 2. モデル(設計図)の定義
class Base(DeclarativeBase):
    pass

class Product(Base):
    __tablename__ = "products"
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column()
    price: Mapped[int] = mapped_column()

# 3. テーブルの作成
Base.metadata.create_all(engine)

# 4. データの登録と検索
with Session(engine) as session:
    # データの追加
    new_item = Product(name="Python入門書", price=2800)
    session.add(new_item)
    session.commit()

    # データの検索(価格が2000円以上の商品を探す)
    stmt = select(Product).where(Product.price >= 2000)
    result = session.scalars(stmt).first()
    
    if result:
        print(f"商品名: {result.name} / 価格: {result.price}円")

上記のコードを実行した結果、正しくデータが取得できると、以下のような出力が得られます。


商品名: Python入門書 / 価格: 2800円

このように、SQLAlchemyを使いこなせるようになると、Pythonプログラムからデータベースを自由自在に操れるようになります。ウェブアプリケーションの開発やデータ分析の基盤作りなど、活躍の場は非常に広いです。まずは基本をしっかりマスターして、より複雑なリレーション(テーブル同士の繋がり)や高度なクエリ作成にも挑戦してみてください。

先生と生徒の振り返り会話

生徒

「先生、まとめまで読んでみて、SQLAlchemyの流れがしっかり理解できました!最初は難しそうでしたが、Pythonのクラスを作る感覚でテーブルが作れるのは本当に便利ですね。」

先生

「その通りです。特に with Session(engine) as session: を使う書き方は、安全にデータベースを操作するための基本になるので、ぜひ癖をつけておきましょうね。」

生徒

「はい!サンプルコードにあった selectwhere を使えば、特定のデータだけを狙い撃ちして取得できることも分かりました。これなら、大量のデータがあっても怖くありません。」

先生

「素晴らしい意気込みですね。実際の現場では、複数のテーブルを繋げたり、もっと複雑な条件で検索したりすることもありますが、土台となる考え方は今日学んだことと同じですよ。次は、複数のデータを一度に登録する方法や、並び替えのやり方を調べてみるともっと楽しくなりますよ!」

生徒

「ありがとうございます!まずはこのサンプルコードを自分で少し書き換えて、商品リストアプリみたいなものを作って練習してみます!」

カテゴリの一覧へ
新着記事
New1
Django
Djangoマイグレーションの基本コマンド完全解説|makemigrationsとmigrateでDB設計を理解しよう
New2
Django
Djangoマイグレーション入門|モデル変更をDBへ適用する仕組みを初心者向けに解説
New3
Python
PythonのFlaskでAPIを開発する方法!基本のルーティングから実装まで
New4
Django
Djangoモデル作成手順|models.pyの書き方と基本パターンを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Flask
FlaskでJSONレスポンスを多言語化!API設計の基本を初心者向けに解説
No.2
Java&Spring記事人気No2
Python
PythonでNoSQL操作!エラーハンドリングを初心者向けに徹底解説
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでCassandraに接続する方法を完全ガイド!cassandra-driverの使い方
No.5
Java&Spring記事人気No5
Flask
Flaskで多言語対応のログメッセージを出力する方法!Python初心者向けガイド
No.6
Java&Spring記事人気No6
Flask
Flaskでフォームラベルやバリデーションメッセージを翻訳する方法!多言語対応の基本
No.7
Java&Spring記事人気No7
Python
PythonのSQLAlchemy使い方入門!初心者でもわかるインストールと初期設定
No.8
Java&Spring記事人気No8
Python
PythonのSQLAlchemyでデータベース操作!モデルクラスでテーブル定義する方法を徹底解説