カテゴリ: Flask 更新日: 2025/12/17

Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説

Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説

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

生徒

「Flaskでデータベースを使いたいのですが、どこから始めればいいか分かりません。どうすればいいですか?」

先生

「Flaskでデータベースを扱うには、SQLAlchemy(エスキューエル・アルケミー)というとても便利なツールがあります。これを使えば、難しいデータベースの操作も簡単になりますよ。」

生徒

「SQLAlchemyって難しそうな名前ですね。初心者でも使えるんですか?」

先生

「もちろんです!プログラミングが初めての方でも大丈夫です。今回は、FlaskとSQLAlchemyを使って、データベースの基本をゆっくりていねいに解説していきますね。」

1. Flaskとデータベースをつなぐってどういうこと?

1. Flaskとデータベースをつなぐってどういうこと?
1. Flaskとデータベースをつなぐってどういうこと?

Flask(フラスク)は、Pythonで作られた軽量なWebフレームワークで、初心者でも扱いやすいのが特徴です。Webアプリでは、ユーザー情報や商品データなど、繰り返し使う情報を保存しておく必要があります。この保存場所が「データベース」で、ノートにメモを書き留めておくような感覚でデータを記録できます。

Flaskとデータベースをつなぐために使うのが、SQLAlchemy(エスキューエル・アルケミー)というライブラリです。データベースに直接命令を書くと専門的な知識が必要ですが、SQLAlchemyならPythonのコードだけで直感的にデータの保存・読み取りができます。

例えば、次のように「メモを書いたり読み返す」イメージでデータを扱えるようになります。


# ▼ SQLAlchemyを使うと、こんな雰囲気でデータを扱えます
# ユーザーというデータの入れ物を作る(後の章で詳しく説明)
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

# データを追加するイメージ
new_user = User(name="佐藤さん")
db.session.add(new_user)
db.session.commit()  # ノートに“保存”する感じ

このように、SQLAlchemyは「Pythonの書き方でデータを扱えるようにしてくれる便利な道具」です。Flaskと組み合わせることで、データベースの扱いがぐっと簡単になり、プログラミング初心者でもデータの保存・管理に挑戦しやすくなります。

2. 仮想環境をつくろう(他のプロジェクトと混ざらないように)

2. 仮想環境をつくろう(他のプロジェクトと混ざらないように)
2. 仮想環境をつくろう(他のプロジェクトと混ざらないように)

Pythonでは「仮想環境(かそうかんきょう)」という、専用の作業部屋のようなものを作って、その中だけで作業をすると安心です。

下のコマンドで仮想環境を作れます。


python -m venv venv

作った仮想環境を使うには、以下のコマンドを打ちます(使っているパソコンによって違います)。


# MacやLinuxの人は
source venv/bin/activate

# Windowsの人は
venv\Scripts\activate

3. 必要なものをインストールしよう

3. 必要なものをインストールしよう
3. 必要なものをインストールしよう

次に、FlaskとSQLAlchemyをインストールします。「インストール」とは、必要な道具をパソコンに入れることです。


pip install flask flask_sqlalchemy

これでFlask本体と、データベースとつなぐためのSQLAlchemyが使えるようになります。

4. FlaskとSQLAlchemyをつなげる準備

4. FlaskとSQLAlchemyをつなげる準備
4. FlaskとSQLAlchemyをつなげる準備

次に、Flaskとデータベース(今回はSQLiteという簡単な種類)をつなぐ設定をします。

SQLite(エスキューエル・ライト)はファイル形式の軽いデータベースで、初心者にぴったりです。


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# データベースの場所を指定(同じフォルダに app.db というファイルを作成)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'

# エラー警告をオフにする設定(必ず入れる)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# データベースを使うための準備
db = SQLAlchemy(app)

5. データを保存するクラス(テーブル)を作ろう

5. データを保存するクラス(テーブル)を作ろう
5. データを保存するクラス(テーブル)を作ろう

データベースでは、データを「テーブル」という形で保存します。これは、表(ひょう)みたいなものです。

下のコードは、「ユーザー」というデータを表にした例です。名前やメールアドレスなどを保存できます。


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)  # 番号(自動で増える)
    name = db.Column(db.String(50))              # 名前(文字列)
    email = db.Column(db.String(100))            # メールアドレス

ここでdb.Columnは、それぞれの列(カラム)を表します。Integerは数字、Stringは文字を意味します。

6. データベースを作ってみよう

6. データベースを作ってみよう
6. データベースを作ってみよう

クラスを書いただけでは、データベースの表はまだ作られていません。

下のコードで、実際にapp.dbというデータベースファイルに「User」という表を作ります。


with app.app_context():
    db.create_all()

app.app_context()は、Flaskアプリの中でデータベース操作をするために必要な特別な文です。

7. データを追加してみよう(登録)

7. データを追加してみよう(登録)
7. データを追加してみよう(登録)

テーブルができたら、次はデータを入れてみましょう。例えば「田中さん」というユーザーを登録するコードはこちらです。


new_user = User(name="田中太郎", email="tanaka@example.com")
db.session.add(new_user)
db.session.commit()

このsessionは「一時的な作業メモ」のようなもの。commit()で実際にデータベースに書き込みます。

8. データを取り出してみよう(表示)

8. データを取り出してみよう(表示)
8. データを取り出してみよう(表示)

登録したデータを表示することもできます。


users = User.query.all()
for user in users:
    print(user.name, user.email)

田中太郎 tanaka@example.com

query.all()は、すべてのデータをまとめて取り出す命令です。

9. よくあるエラーとその対処法

9. よくあるエラーとその対処法
9. よくあるエラーとその対処法

プログラミング初心者がよくつまずくエラーに次のようなものがあります。

  • ModuleNotFoundError:インストールができていない。pip installをやり直してみましょう。
  • RuntimeError: Working outside of application contextapp.app_context()を忘れていることが原因です。
  • OperationalError:テーブルを作る前にデータを登録しようとしているかも。db.create_all()を先に実行しましょう。

10. おまけ:requirements.txtでインストール管理しよう

10. おまけ:requirements.txtでインストール管理しよう
10. おまけ:requirements.txtでインストール管理しよう

仮想環境で使っているライブラリ(道具)を一覧にしておくと便利です。


pip freeze > requirements.txt

このファイルを使えば、別の人が同じ環境をすぐ再現できます。


pip install -r requirements.txt

まとめ

まとめ
まとめ

Flaskでデータベースを扱う流れをあらためて振り返ると、最初は専門用語が多くて戸惑いがちですが、一つひとつ手順を順番に追っていけば自然と理解できるようになることがわかります。とくに、FlaskとSQLAlchemyの組み合わせは、初心者がWebアプリケーションを学ぶ際の入り口としてとても分かりやすい構成になっており、現実のアプリ開発でも多くの場面で使われている基礎的な技術として身につけておく価値があります。今回学んだ内容を整理すると、仮想環境の準備、必要なライブラリのインストール、アプリ設定、モデルの作成、テーブル生成、データの保存と取得という流れがひとつの道筋としてつながり、実際のアプリ開発の中でどのように活用されるのかがより鮮明に見えてきます。 とりわけ、SQLiteのような扱いやすいデータベースは、初学者にとって強い味方になります。難しい設定や外部サーバーを必要としないため、学習に集中しやすく、自分の書いたコードがすぐに形となって目に見えるので、学びの実感が得やすいというメリットがあります。また、Flaskの構造とSQLAlchemyのモデル定義を理解することで、データベースの概念そのものが自然と身についていきます。表の構造、カラムの型、主キーの役割など、実際に触れながら覚えていくことで、どの項目がどのような意味を持っているのかが明確になり、これからの発展的な学習に役立つ知識の土台ができます。 今回紹介したコードでは、基本的なユーザーテーブルの作成からデータの保存・取得まで進みましたが、実務ではさらに複雑な構造のテーブルを作ったり、複数のテーブルを関連付けたりする場面が多くあります。その準備として、まずは今回の基本をしっかりと身につけることがとても重要です。テーブルに必要な項目を考え、どのような型を使うかを決め、適切に設定する力は、あらゆるWebアプリケーション開発の基礎となります。こうした考え方を身につけておくと、ブログ記事のようなシンプルなアプリだけでなく、予約システムや商品管理など、より現実的なアプリにも応用できるようになります。 また、よくあるエラーをどう防ぐか、どう解決するかといった点も欠かせない知識です。初めてデータベース操作をすると、必ずといっていいほど「アプリケーションコンテキスト」「テーブルが存在しない」「ライブラリが読み込めない」といったエラーに出会います。しかし、それぞれのエラーには原因があり、その原因を理解することでひとつずつ解決できるようになります。今回の内容は、その第一歩としてとても大切な経験になります。エラーと向き合い、解決する力はプログラミングを続けていくうえで大きな財産になります。 慣れてきたら、新しいカラムを追加してみたり、日付情報を保存したり、メールアドレスの重複を防ぐ設定を加えてみたりすると、より本格的なデータベース設計の練習になります。たとえば、登録日時を自動で保存したり、ログイン機能をつくるためにパスワードを保存したりといった機能追加は、非常に良い練習になります。こうした経験を積み重ねることで、自分の書くコードがアプリとして息をし始めるような実感が生まれます。 最後に、requirements.txtを使ってライブラリを管理する方法も紹介しましたが、これはプロジェクトを他の人と共有したり、将来同じ環境を再現するために欠かせない知識です。Webアプリ開発は一人で完結しないことが多く、環境構築を正しく引き継げることは立派なスキルのひとつです。今回の学びを通して、開発の流れを丁寧に理解し、実際に自分で作ってみることで、基礎から応用へと進むための大きな一歩を踏み出すことができたはずです。

追加のサンプルコードで理解を深めよう

ここでは、ユーザーに登録日時を追加したバージョンのモデル例を紹介します。


from datetime import datetime
from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(100))
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return f'<User {self.name}>'

このように日時を保存するカラムを追加することで、ユーザーがいつ登録されたかを記録できます。実際のアプリでは非常によく使われる項目で、掲示板アプリやブログアプリの投稿時刻にも応用できます。こうした小さな改善の積み重ねがアプリの完成度を高め、実用的な機能へとつながっていきます。

先生と生徒の振り返り会話

生徒「今日の内容を振り返ってみると、FlaskとSQLAlchemyの流れがだいぶわかってきました。最初は難しく感じたけれど、テーブルを作ってデータを保存すると仕組みがつながって見えるようになりました。」

先生「とても良い気づきですね。実際に手を動かしてみると、仕組みが自分の中でつながっていく瞬間があります。今回覚えた流れは、今後どんなWebアプリをつくるときにも役に立ちますよ。」

生徒「次は複数のテーブルを使ったり、もっと実践的なアプリにも挑戦してみたいです。」

先生「ぜひ挑戦してみましょう。テーブルの関連付けやフォーム入力など、今の知識を土台にして学べることはたくさんあります。今回の内容をしっかり理解できたので、次のステップもきっと楽しく学べますよ。」

生徒「はい!今日学んだことを忘れないうちに、また自分でも動かしてみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

FlaskとSQLAlchemyを使ってデータベースを始めるには何から始めればいいですか?

まずはPythonの仮想環境を作成し、その中でFlaskとSQLAlchemyをインストールすることから始めましょう。その後、Flaskアプリの設定とSQLiteデータベースの接続を行い、モデルを作ってテーブルを作成するという手順が基本です。
カテゴリの一覧へ
新着記事
New1
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
New2
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
New3
Python
Pythonで日付文字列から曜日を取得する方法を完全ガイド!初心者でもわかる日時処理入門
New4
Flask
FlaskアプリのSSL設定方法をやさしく解説!初心者でもわかるHTTPS対応の手順
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.5
Java&Spring記事人気No5
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策