PythonでSQLAlchemyを活用する基本的な手法

この記事では、Pythonでデータベース操作を行う際によく用いられるライブラリであるSQLAlchemyの基本的な使用方法について解説します。具体的なコード例とその詳細な解説、さらには応用例も含めています。

目次

SQLAlchemyとは

SQLAlchemyは、Pythonでリレーショナルデータベースを操作するためのORM(Object Relational Mapping)ライブラリです。直接SQLクエリを書く必要がなく、Pythonのクラスとメソッドを使用してデータベース操作を行うことができます。

インストール方法

SQLAlchemyを使用する前に、まずはインストールが必要です。以下のpipコマンドで簡単にインストールできます。

pip install SQLAlchemy

基本的な使用方法

SQLAlchemyを使用する基本的な手順は以下の通りです。

1. 接続設定

データベースへの接続設定を行います。

from sqlalchemy import create_engine

# SQLiteでの例
engine = create_engine('sqlite:///example.db')

2. モデル定義

データベースのテーブルをPythonのクラスで定義します。

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    name = Column(String)

3. テーブル作成

定義したモデルから実際のテーブルを作成します。

Base.metadata.create_all(engine)

データの操作

データの挿入

データをテーブルに挿入する基本的な方法は以下の通りです。

from sqlalchemy.orm import Session

# セッションを開始
session = Session(engine)

# データの挿入
new_user = User(name='John')
session.add(new_user)

# コミット
session.commit()

データの取得

データを取得する基本的な方法は以下の通りです。

# セッションを開始
session = Session(engine)

# データの取得
users = session.query(User).all()

# 出力
for user in users:
    print(user.name)

応用例

1. 複数のテーブルの操作

複数のテーブルを連携させる例です。

# 新たなモデルを定義
class Address(Base):
    __tablename__ = 'addresses'
    
    id = Column(Integer, primary_key=True)
    email = Column(String)
    user_id = Column(Integer)

2. カスケード削除

親テーブルのデータが削除されたときに、関連する子テーブルのデータも自動で削除する設定の例です。

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Address(Base):
    __tablename__ = 'addresses'
    
    id = Column(Integer, primary_key=True)
    email = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))
    
    user = relationship("User", back_populates="addresses", cascade="all, delete")

まとめ

この記事では、SQLAlchemyの基本的な使用方法について詳しく解説しました。Pythonでリレーショナルデータベースを効率よく操作するためには、SQLAlchemyは非常に便利なライブラリです。ぜひ活用してみてください。

コメント

コメントする

目次