ORMの基本 - SQLAlchemyの利用
SQLAlchemyは、Pythonにおいてデータベース操作をオブジェクト指向的なアプローチで行うための強力なツールであるORM(Object Relational Mapping)ライブラリです。データベースのテーブルをPythonのクラスとして定義し、SQL文を直接記述することなく、Pythonオブジェクトの操作としてデータベースとやり取りできます。

SQLAlchemyの導入
SQLAlchemyを利用するために、まず以下のコマンドでライブラリをインストールします。
pip install SQLAlchemy
SQLAlchemyによる基本的なデータベース操作
SQLAlchemyでデータベースを扱う際は、以下の手順で進めます。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 接続用エンジン作成
engine = create_engine('sqlite:///example.db')
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()
ORMを構成する主要な要素
ORMの仕組みを理解する上で重要となる概念をまとめました。
| 概念 | 説明 |
|---|---|
| エンジン | データベースとの接続を管理する窓口。create_engine()で生成します。 |
| Base | 全てのテーブル定義クラスの基盤。declarative_base()で作成します。 |
| セッション | トランザクションを管理し、クエリの実行やデータの永続化を行う窓口です。 |
| マッピング | Pythonのクラス定義を、データベース上のテーブル構造へと変換するプロセスです。 |
MySQLデータベースへの接続
SQLiteの代わりにMySQLへ接続する場合は、エンジン作成時に接続文字列をMySQL用へ変更します。
# mysql+mysqlconnector://ユーザー名:パスワード@ホスト名/データベース名
engine = create_engine('mysql+mysqlconnector://root:password@localhost/sample_db')
まとめ
SQLAlchemyを活用すると、データベースを単なるデータの格納場所としてだけでなく、Pythonのクラス構造として直感的に扱うことができるようになります。オブジェクト指向プログラミングの利点を最大限に活かせるため、中〜大規模なアプリケーション開発では必須のスキルと言えます。まずは基本的なCRUD(作成・読み出し・更新・削除)操作から試し、徐々にリレーション設定などの高度な機能へとステップアップしていきましょう。