Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

RESTful APIとデータベースの連携: Pythonによる実践ガイド

LYPプレミアム会員 python

前回の記事では、Pythonを使用してFlaskフレームワークを活用し、基本的なRESTful APIを設計・実装しました。今回は、このAPIをデータベースと連携させ、データの永続化や取得を行う方法について詳しく解説します。

データベースの選定

データベースの選定はプロジェクトの要件によりますが、PythonのWeb開発においてよく使われるデータベースとしては、SQLitePostgreSQL、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をセキュアに保ち、認証機能を組み込む方法について詳しく説明します。お楽しみに!