この記事では、PythonプログラミングにおいてMySQLのORMツールとしてよく用いられるSQLAlchemyの基本的な利用方法から応用例までを解説します。具体的なコード例とその解説、応用例を含めています。
SQLAlchemyとは
SQLAlchemyは、PythonのORM(Object Relational Mapping)フレームワークの一つです。データベースをPythonオブジェクトとして抽象化することで、SQLクエリを直接書かずにデータベース操作を行うことができます。
SQLAlchemyのインストール
SQLAlchemyを利用するためには、まずパッケージをインストールする必要があります。
pip install SQLAlchemy
基本的な利用方法
データベース接続
最初のステップとして、データベースに接続します。
from sqlalchemy import create_engine
# MySQLに接続
engine = create_engine('mysql://username:password@localhost/db_name')
このコードでは、`create_engine`関数を用いてMySQLのデータベースに接続しています。
テーブル定義
次に、データベースのテーブルとマッピングする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(50))
email = Column(String(50))
こちらのコードでは、`users`テーブルに`id`, `name`, `email`という3つのカラムを持つクラス`User`を定義しています。
データの挿入
テーブル定義が完了したら、データを挿入できます。
from sqlalchemy.orm import Session
# セッション作成
session = Session(engine)
# ユーザー追加
new_user = User(name='Taro', email='taro@example.com')
session.add(new_user)
# コミット
session.commit()
この例では、`User`クラスのインスタンスを作成し、`add`メソッドでセッションに追加、最後に`commit`メソッドでデータベースに反映しています。
応用例
データのフィルタリング
# データのフィルタリング
filtered_users = session.query(User).filter_by(name='Taro').all()
# 結果表示
for user in filtered_users:
print(user.id, user.name, user.email)
この応用例では、名前が’Taro’であるユーザーをフィルタリングしています。
複数テーブルの連結
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'))
email = Column(String(50))
user = relationship("User", back_populates="addresses")
User.addresses = relationship("Address", order_by=Address.id, back_populates="user")
# ユーザーとアドレス追加
new_user = User(name='Taro', email='taro@example.com')
new_user.addresses = [Address(email='taro@gmail.com'), Address(email='taro@yahoo.com')]
session.add(new_user)
session.commit()
この例では、`User`クラスと`Address`クラスを関連付けています。こうすることで、1つのユーザーが複数のアドレスを持てるようになります。
まとめ
SQLAlchemyはPythonでMySQLを扱う際の強力なツールです。基本的なCRUD操作から、より複雑なデータ操作まで幅広くカバーしています。この記事で紹介した内容を基に、是非とも実際の開発での利用を考えてみてください。
コメント