わかりました。以下にPostgreSQLをFlaskアプリケーションで使用する方法に関する完全かつ包括的な記事を日本語で提供いたします。
PostgreSQLをFlaskアプリケーションで使用する方法
FlaskはPythonの軽量なWebアプリケーションフレームワークであり、データベースと連携してデータの永続化を実現することができます。本記事では、FlaskアプリケーションでPostgreSQLデータベースを使用する方法について、セットアップから基本的な操作までを詳しく説明します。

1. 必要なライブラリのインストール
FlaskとPostgreSQLを連携させるためには、いくつかのライブラリをインストールする必要があります。まずは以下のコマンドを使って必要なライブラリをインストールしましょう。
bashpip install Flask psycopg2 Flask-SQLAlchemy
- Flask: Flask本体のライブラリ。
- psycopg2: PythonからPostgreSQLに接続するためのライブラリ。
- Flask-SQLAlchemy: Flask用のSQLAlchemy拡張。これにより、ORM(Object-Relational Mapping)を使用してデータベースとやり取りが可能になります。
2. PostgreSQLデータベースのセットアップ
次に、PostgreSQLデータベースをセットアップします。まだPostgreSQLがインストールされていない場合は、公式サイトからインストールすることができます。
インストールが完了したら、PostgreSQLにログインし、新しいデータベースを作成します。ターミナルを開き、以下のコマンドでPostgreSQLに接続します。
bashpsql -U postgres
データベースの作成コマンドを実行します。
sqlCREATE DATABASE flaskdb;
3. Flaskアプリケーションの作成
Flaskアプリケーションの基本的な構成を作成します。app.py
というファイルを作成し、以下のコードを追加します。
pythonfrom flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# データベースのURIを設定
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost/flaskdb'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# SQLAlchemyオブジェクトの作成
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), unique=True, nullable=False)
email = db.Column(db.String(100), unique=True, nullable=False)
def __repr__(self):
return f'{self.username} >'
@app.route('/')
def index():
return "FlaskとPostgreSQLを使ったアプリケーション"
if __name__ == "__main__":
app.run(debug=True)
説明
SQLALCHEMY_DATABASE_URI
にはPostgreSQLの接続情報を設定します。postgresql://username:password@localhost/databasename
という形式です。SQLALCHEMY_TRACK_MODIFICATIONS
をFalse
に設定すると、無駄なメモリ使用を避けることができます。User
クラスはデータベースのテーブルに対応するモデルです。この例では、id
、username
、email
というカラムを持つusers
テーブルを作成します。
4. データベースの作成
アプリケーションを初めて実行する前に、データベースのテーブルを作成する必要があります。以下のコマンドでテーブルを作成します。
pythonfrom app import db
db.create_all()
これにより、User
クラスに基づいてPostgreSQLデータベース内にusers
テーブルが作成されます。
5. データベース操作
FlaskアプリケーションでPostgreSQLデータベースを操作する方法をいくつか紹介します。
新しいユーザーの追加
pythonfrom app import db, User
new_user = User(username='JohnDoe', email='john@example.com')
db.session.add(new_user)
db.session.commit()
ユーザーのクエリ(検索)
pythonuser = User.query.filter_by(username='JohnDoe').first()
print(user.email)
ユーザーの更新
pythonuser = User.query.filter_by(username='JohnDoe').first()
user.email = 'john_new@example.com'
db.session.commit()
ユーザーの削除
pythonuser = User.query.filter_by(username='JohnDoe').first()
db.session.delete(user)
db.session.commit()
6. フォーム入力とデータの保存
Flaskフォームからデータを受け取って、PostgreSQLに保存する方法を示します。Flask-WTFを使ってフォームを作成し、ユーザーが入力したデータをデータベースに保存します。
bashpip install Flask-WTF
次に、フォームを定義し、データを受け取るルートを作成します。
pythonfrom flask import render_template, redirect, url_for
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import InputRequired
class UserForm(FlaskForm):
username = StringField('Username', validators=[InputRequired()])
email = StringField('Email', validators=[InputRequired()])
submit = SubmitField('Submit')
@app.route('/add_user', methods=['GET', 'POST'])
def add_user():
form = UserForm()
if form.validate_on_submit():
new_user = User(username=form.username.data, email=form.email.data)
db.session.add(new_user)
db.session.commit()
return redirect(url_for('index'))
return render_template('add_user.html', form=form)
add_user.html
というテンプレートを作成し、フォームを表示します。
html<form method="POST">
{{ form.hidden_tag() }}
<div>{{ form.username.label }} {{ form.username }}div>
<div>{{ form.email.label }} {{ form.email }}div>
<div>{{ form.submit }}div>
form>
このルートを訪れると、ユーザーがフォームに入力し、データがPostgreSQLデータベースに保存されます。
7. エラーハンドリング
PostgreSQLを使用する際に発生する可能性のあるエラーについても、適切にハンドリングすることが重要です。例えば、データベース接続のエラーやSQLのエラーが発生した場合には、適切なメッセージを表示することが求められます。
pythonfrom flask import abort
try:
db.session.commit()
except Exception as e:
db.session.rollback()
abort(500, description="データベースエラーが発生しました")
まとめ
この記事では、FlaskアプリケーションにおいてPostgreSQLを使用するための基本的なセットアップとデータベース操作の方法について説明しました。FlaskとSQLAlchemyを使うことで、データベースとのやり取りが非常に簡単になります。データベースの作成からデータの追加、更新、削除まで、Flaskアプリケーションでデータを操作する基本的な流れを理解することができたでしょう。
FlaskとPostgreSQLを組み合わせることで、データ永続化を簡単に実現することができます。これを基に、さらに複雑なWebアプリケーションの開発が可能になります。
以上がFlaskとPostgreSQLを使用した基本的なアプリケーションの作成方法です。