この記事では、PythonのWebフレームワークであるFlaskとオブジェクトリレーショナルマッピング(ORM)ライブラリであるSQLAlchemyを用いたWebアプリケーションの開発について解説します。具体的なコード例とその詳細な解説、応用例を2つ含めています。
目次
Flaskとは
FlaskはPythonで書かれた軽量なWebフレームワークです。短期間でのプロトタイピングから大規模なWebアプリケーション開発まで、多様なニーズに応えることができます。
Flaskのインストール
Pythonのパッケージ管理ツールであるpipを用いて、以下のコマンドでFlaskをインストールできます。
pip install Flask
ORM(SQLAlchemy)とは
SQLAlchemyはPythonのORMライブラリです。データベース操作をPythonオブジェクトを通じて行うことができ、SQLクエリの手書きが不要になります。
SQLAlchemyのインストール
SQLAlchemyもpipを用いて簡単にインストールできます。
pip install SQLAlchemy
基本的な使用方法
データベースモデルの定義
SQLAlchemyを用いて、データベースのテーブルに対応するPythonのクラスを定義します。
# SQLAlchemyをインポート
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
# ベースクラスを生成
Base = declarative_base()
# Userクラス(テーブル)を定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
Flaskアプリケーションとデータベースの連携
Flaskアプリケーションを作成し、SQLAlchemyと連携させます。
# FlaskとSQLAlchemyをインポート
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# データベース設定
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
# SQLAlchemyインスタンスを生成
db = SQLAlchemy(app)
応用例1: CRUD操作
データの追加(Create)
# ユーザーを追加
new_user = User(name='John', email='john@example.com')
db.session.add(new_user)
db.session.commit()
データの読み込み(Read)
# ユーザーを検索
user = User.query.filter_by(name='John').first()
print(user.email)
応用例2: 複数テーブルの連携
多対多の関係の設定
# Tagクラス(テーブル)を定義
class Tag(Base):
__tablename__ = 'tags'
id = Column(Integer, primary_key=True)
name = Column(String)
多対多の関係でデータの追加と検索
# Johnにtag1とtag2を追加
tag1 = Tag(name='tag1')
tag2 = Tag(name='tag2')
john = User.query.filter_by(name='John').first()
john.tags = [tag1, tag2]
db.session.add(john)
db.session.commit()
# Johnのタグを検索
john = User.query.filter_by(name='John').first()
for tag in john.tags:
print(tag.name)
まとめ
FlaskとSQLAlchemyを用いて、効率的にWebアプリケーションを開発する方法について解説しました。特に、データベース操作においてSQLAlchemyが提供する便利な機能と、その応用例について詳しく見てきました。
コメント