前回の記事では、Pythonを使用してFlaskフレームワークを活用し、基本的なRESTful APIを設計・実装しました。今回は、このAPIをデータベースと連携させ、データの永続化や取得を行う方法について詳しく解説します。
データベースの選定
データベースの選定はプロジェクトの要件によりますが、PythonのWeb開発においてよく使われるデータベースとしては、SQLite、PostgreSQL、MongoDBなどがあります。今回はSQLiteを例に説明しますが、他のデータベースにも同様の手順が適用可能です。
Flask-SQLAlchemyを使用したデータベースモデルの作成
Flask-SQLAlchemyはFlaskと統合されたSQLAlchemyというORM(Object-Relational Mapping)ライブラリを提供しています。これを使用して、データベースモデルを作成し、APIとデータベースを連携させます。
from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' db = SQLAlchemy(app) # データベースモデルの定義 class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) # データベースの初期化 db.create_all() # ... (前回のAPI実装部分を省略) if __name__ == '__main__': app.run(debug=True)
上記のコードでは、Flask-SQLAlchemyを使用して User
というデータベースモデルを作成しています。モデル内で定義したカラムはデータベースのテーブルのカラムに対応し、db.create_all()
で初期化します。
データベースとの連携
APIエンドポイント内でデータベースとのやり取りを行います。以下に、新しいユーザーをデータベースに保存するエンドポイントの例を示します。
# 新しいユーザーを作成してデータベースに保存するエンドポイント @app.route('/users', methods=['POST']) def create_user(): data = request.get_json() # データベースに新しいユーザーを追加 new_user = User(name=data["name"]) db.session.add(new_user) db.session.commit() return jsonify({"user": {"id": new_user.id, "name": new_user.name}}), 201
この例では、POSTリクエストがあった際に新しいユーザーをデータベースに追加しています。db.session.add(new_user)
でセッションに新しいユーザーを追加し、db.session.commit()
でデータベースに変更を反映します。
他のCRUD操作も同様にデータベースと連携させることができます。
終わりに
今回はFlask-SQLAlchemyを使用してデータベースとの連携を実現しました。データベースを活用することで、APIは永続的なデータの保存や取得が可能となり、より実用的なアプリケーションを構築する基礎となります。
次回のテーマは「セキュリティ対策と認証」です。APIをセキュアに保ち、認証機能を組み込む方法について詳しく説明します。お楽しみに!