PythonでFlaskとORM(SQLAlchemy)を使ったWebアプリケーション開発

この記事では、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が提供する便利な機能と、その応用例について詳しく見てきました。

コメント

コメントする

目次