ORMの基本 | SQLAlchemyの利用 | Python本格超入門

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

ORMの基本 – SQLAlchemyの利用

この記事では、PythonとMySQLを接続する際に利用できるORM(Object Relational Mapping)ツールであるSQLAlchemyについて解説します。ORMは、データベースのテーブルとPythonのクラスを対応させることで、データベース操作をオブジェクト指向的に行うことができる強力な仕組みです。SQLAlchemyはPythonの主要なORMライブラリであり、データベース操作を容易にするために広く使われています。

SQLAlchemyのインストール

SQLAlchemyを利用するには、まずライブラリをインストールする必要があります。次のコマンドを使用してインストールを行います。

pip install SQLAlchemy

ORMとは

ORM(Object-Relational Mapping)は、リレーショナルデータベースのテーブルをPythonのクラスとマッピングし、SQLを直接書かずにデータベース操作を行う仕組みです。ORMを使うことで、SQLの知識がそれほどなくてもデータベースの操作が可能となります。

SQLAlchemyでの基本的なORMの使い方

SQLAlchemyを使用して、PythonでMySQLのテーブルに対応するクラスを定義し、データベース操作を行うための基本的な流れを紹介します。まずは、エンジンの作成から始め、テーブルを定義してデータベースとやり取りをします。

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# SQLite用のエンジンを作成(MySQLに接続する場合は別のURIを使用します)
engine = create_engine('sqlite:///example.db')

# ORMの基盤となるクラスを作成
Base = declarative_base()

# データベースのテーブルに対応するクラスを定義
class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# テーブルをデータベースに作成
Base.metadata.create_all(engine)

# セッションの作成
Session = sessionmaker(bind=engine)
session = Session()

# データの挿入
new_user = User(name='John Doe', age=30)
session.add(new_user)
session.commit()

# データの取得
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# セッションを閉じる
session.close()

このコードでは、次のステップを実行しています:

  • データベースエンジンの作成
  • テーブルを表すクラスの定義(このクラスはUserというテーブルに対応します)
  • テーブルの作成
  • セッションを使ってデータの挿入と取得

ORMの仕組み

ORMでは、データベースのテーブルをPythonクラスとして定義し、SQL文を書く代わりにクラスのインスタンスを使ってデータを操作します。以下は、主要なORMの概念です。

概念 説明
エンジン データベースとの接続を管理するオブジェクト。create_engine()で作成。
Base 全てのORMクラスの基盤となるクラス。declarative_base()を使用して作成。
セッション データベースとの対話を管理するためのオブジェクト。トランザクションを実行し、クエリの作成と実行を行う。
マッピング Pythonクラスとデータベースのテーブルを対応付けるプロセス。

MySQLとの連携

SQLiteを使った例で説明しましたが、MySQLとも同様の手順で連携可能です。MySQLの場合はcreate_engine()でMySQL用の接続文字列を使用します。

engine = create_engine('mysql+mysqlconnector://root:password@localhost/sample_db')

これにより、MySQLデータベースに接続し、SQLAlchemyを使ったORM操作が可能になります。

まとめ

この記事では、SQLAlchemyを使ったORMの基本について学びました。SQLAlchemyを使用することで、データベース操作をよりシンプルで直感的に行うことができ、データベースのテーブルをPythonクラスとして扱えるため、オブジェクト指向プログラミングのメリットを活かせます。ORMを使った効率的なデータベース操作を習得することで、より高度なPythonアプリケーション開発に役立てることができます。