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アプリケーション開発に役立てることができます。