カテゴリ: Flask 更新日: 2026/02/19

FlaskでAWS RDSに接続する方法を徹底解説!MySQL/PostgreSQL設定ガイド

FlaskでAWS RDS(MySQL/PostgreSQL)に接続する設定方法
FlaskでAWS RDS(MySQL/PostgreSQL)に接続する設定方法

先生と生徒の会話形式で理解しよう

生徒

「Flaskで作ったアプリのデータを、AWSのRDSというデータベースに保存したいです。接続するにはどうすればいいですか?」

先生

「AWS RDSは、クラウド上でデータを安全に保管してくれる専用の金庫のようなものです。Flaskからは、SQLAlchemyという便利な道具を使って接続しますよ。」

生徒

「MySQLやPostgreSQLといった種類があるみたいですが、設定方法は違いますか?」

先生

「基本の書き方は同じですが、接続用の呪文が少しだけ変わります。初心者の方でも迷わないように、順を追って進めていきましょう!」

1. FlaskとAWS RDSの役割を理解しよう

1. FlaskとAWS RDSの役割を理解しよう
1. FlaskとAWS RDSの役割を理解しよう

まずは、今回使う道具の役割を整理しましょう。Flask(フラスク)は、PythonでWebサイトの仕組みを作るためのフレームワークです。そして、AWS RDS(アールディーエス)は、Amazonが提供する「リレーショナルデータベース」のサービスです。

データベースとは、ユーザー情報やブログの投稿内容など、大切なデータを整理して保管しておくための巨大な表のようなものです。自分のパソコンの中にデータを置くのではなく、AWSというクラウド上の安全な場所に置くことで、世界中からアクセスしてもデータが消えたり壊れたりしにくくなります。MySQLPostgreSQLは、そのデータベースを管理するシステムの種類のことで、どちらを選んでもRDSなら高性能に動かすことができます。

2. AWS RDS側で接続情報を取得する手順

2. AWS RDS側で接続情報を取得する手順
2. AWS RDS側で接続情報を取得する手順

Flaskから接続するためには、RDSという金庫を開けるための情報が必要です。AWSの管理画面にログインして、以下の情報をメモしてください。

もっとも重要なのが、エンドポイントと呼ばれる住所です。これは「db-instance.xxxx.ap-northeast-1.rds.amazonaws.com」のような長い文字列です。これに加えて、データベースを作成したときに決めた「ユーザー名」「パスワード」「ポート番号(MySQLなら3306、PostgreSQLなら5432)」が必要です。これらは後ほど、Flaskのプログラムの中で「接続文字列」として組み合わせて使うことになります。

また、セキュリティ設定(セキュリティグループ)で、自分のパソコンやFlaskを動かしているサーバーからのアクセスを許可しておくのを忘れないようにしましょう。これを忘れると、何度試しても「接続できません」とエラーになってしまいます。

3. 必要なライブラリのインストール

3. 必要なライブラリのインストール
3. 必要なライブラリのインストール

Pythonからデータベースを操作するために、便利な拡張機能(ライブラリ)をインストールしましょう。今回は、データベースの操作を直感的にしてくれるFlask-SQLAlchemyと、MySQLまたはPostgreSQLに接続するための「ドライバー」と呼ばれるソフトを入れます。

パソコンの黒い画面(コマンドプロンプトやターミナル)を開いて、以下のコマンドを入力してください。MySQLを使う場合とPostgreSQLを使う場合で、最後の単語が変わります。


# MySQLを使う場合
pip install flask-sqlalchemy pymysql

# PostgreSQLを使う場合
pip install flask-sqlalchemy psycopg2-binary

これらの道具を揃えることで、難しいSQL文を直接書かなくても、Pythonの書き方でデータを保存したり取り出したりできるようになります。これがプログラミングの効率をぐんと上げてくれます。

4. FlaskからMySQLへ接続する基本コード

4. FlaskからMySQLへ接続する基本コード
4. FlaskからMySQLへ接続する基本コード

では、実際にMySQLのRDSに接続するためのコードを書いてみましょう。以下の例は、データベースに接続して、ユーザーという名前のテーブル(表)を管理するための準備をするプログラムです。


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# MySQL接続のための設定(呪文の形式:mysql+pymysql://ユーザー:パスワード@エンドポイント:ポート/DB名)
db_user = 'admin'
db_pass = 'password123'
db_host = 'mydb.xxxx.rds.amazonaws.com'
db_name = 'sample_db'

app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{db_user}:{db_pass}@{db_host}:3306/{db_name}'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)

if __name__ == "__main__":
    print("MySQLデータベースへの接続準備が整いました!")

コード内のSQLALCHEMY_DATABASE_URIという部分が、接続するための大切な鍵です。ここに先ほどメモしたRDSの情報を正しく埋め込むことで、FlaskとRDSが一本の線でつながります。初心者の方は、まずこの「接続文字列」を正しく作ることが一番のハードルですので、一文字ずつ確認しながら入力しましょう。

5. PostgreSQLを使う場合の接続設定の違い

5. PostgreSQLを使う場合の接続設定の違い
5. PostgreSQLを使う場合の接続設定の違い

もしPostgreSQLという種類のデータベースをRDSで作った場合、接続の書き方が少しだけ変わります。基本の仕組みは同じですが、先頭の「mysql+pymysql」の部分を「postgresql」に変える必要があります。


# PostgreSQLに接続する場合の設定例
# ポート番号は通常5432になります
db_uri = 'postgresql://admin:password123@mydb.xxxx.rds.amazonaws.com:5432/sample_db'

app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
db = SQLAlchemy(app)

@app.route("/")
def check_db():
    try:
        # 接続が成功するかテストします
        db.session.execute('SELECT 1')
        return "PostgreSQLへの接続に成功しました!"
    except Exception as e:
        return f"エラーが発生しました: {str(e)}"

このように、Flask-SQLAlchemyを使っていれば、データベースの種類が変わっても設定を一行書き換えるだけで対応できます。これがクラウド連携において非常に柔軟で便利なポイントです。PostgreSQLはデータの整合性を重視するアプリに向いていると言われており、多くの開発者に愛用されています。

6. データの保存と読み込みを試してみよう

6. データの保存と読み込みを試してみよう
6. データの保存と読み込みを試してみよう

接続ができたら、実際にデータを保存してみましょう。データベースへの書き込みは「セッション」という単位で行います。これは、銀行の振込作業のように「一連の処理をまとめて確定させる」というイメージです。


@app.route("/add_user/<name>")
def add_user(name):
    # 新しいユーザーデータを作成します
    new_user = User(username=name)
    
    # データベースに追加して、変更を確定(コミット)します
    db.session.add(new_user)
    db.session.commit()
    
    return f"ユーザー {name} をRDSに保存しました!"

@app.route("/list_users")
def list_users():
    # 保存されている全ユーザーを取得します
    all_users = User.query.all()
    names = [u.username for u in all_users]
    return f"現在のユーザー一覧: {names}"

このように書くだけで、ブラウザから名前を送ればRDSというクラウドの金庫にデータが書き込まれます。自分のパソコンを再起動しても、データはRDSの中にずっと残っています。これがデータベース連携の醍醐味ですね。パソコン初心者の方でも、この「追加(add)」と「確定(commit)」の流れを覚えれば、Webアプリの機能がぐっと本格的になります。

7. 環境変数を使ってパスワードを保護する

7. 環境変数を使ってパスワードを保護する
7. 環境変数を使ってパスワードを保護する

一つ、とても大切なセキュリティの注意点があります。プログラムの中に直接データベースのパスワードを書いてしまうと、そのファイルを誰かに見られたときに情報が漏れてしまいます。これを防ぐために環境変数(かんきょうへんすう)という仕組みを使います。

環境変数とは、プログラムの外側に秘密の値を隠しておく箱のようなものです。Pythonのos.environという機能を使えば、安全にパスワードを読み込むことができます。デプロイ(アプリの公開)を考える段階では、この安全な書き方に修正しておくのがプロの常識です。

8. データベースの初期化とエラー対策

8. データベースの初期化とエラー対策
8. データベースの初期化とエラー対策

初めてデータベースを使うときは、プログラムの中で定義した「テーブル(表)」を実際にRDSの中に作成する必要があります。これを初期化と呼びます。以下のコードを一度だけ実行することで、RDSの中に必要な器が作られます。


# アプリのコンテキスト内でテーブルを作成する
with app.app_context():
    db.create_all()
    print("データベースのテーブル作成が完了しました。")

もしここでエラーが出る場合は、AWS側のセキュリティ設定(インバウンドルール)が原因であることが多いです。RDSが外部からの通信を拒否していないか、もう一度設定画面を確認してみましょう。エラーメッセージをよく読むと、接続に失敗した原因が書かれています。トラブルを一つずつ解決していくことで、クラウドの仕組みがより深く理解できるようになりますよ。

9. クラウド連携でアプリを成長させるコツ

9. クラウド連携でアプリを成長させるコツ
9. クラウド連携でアプリを成長させるコツ

FlaskとAWS RDSの連携ができれば、もうデータの保存場所に困ることはありません。大量のユーザー情報を扱ったり、ECサイトのような複雑なデータを管理したりすることも可能です。AWS RDSは、アクセスの増加に合わせて自動で性能を上げる設定もできるため、将来的にアプリが有名になっても安心です。

プログラミング未経験から始めると、最初はクラウドの設定に戸惑うかもしれません。しかし、一つひとつの設定には必ず意味があります。一度つながってしまえば、あとはPythonのコードを書くだけで自由にデータを操れるようになります。この強力な組み合わせを武器にして、自分だけの素晴らしいWebアプリを形にしていきましょう。あなたの挑戦を応援しています!

カテゴリの一覧へ
新着記事
New1
Flask
FlaskでAjaxリクエストを処理する方法!JSONとの連携を初心者向けにやさしく解説
New2
Flask
FlaskアプリのテストをGitHub Actionsで自動化する方法まとめ!初心者向け解説
New3
Python
Pythonの例外処理におけるコーディング規約を完全解説!初心者でもわかるPEP8ガイドライン
New4
Flask
FlaskでHello Worldを表示するには?最初の1行を実行してみよう
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
FlaskとAWS S3を連携!静的ファイルを効率よく配信する初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonで例外の種類ごとに処理を分ける方法を完全解説!初心者でもわかる複数except入門
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
FlaskでAWS RDSに接続する方法を徹底解説!MySQL/PostgreSQL設定ガイド
No.8
Java&Spring記事人気No8
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説