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

FlaskでSQLAlchemyを使ってテーブルを作成する基本ステップまとめ!初心者にも超やさしく解説

FlaskでSQLAlchemyを使ってテーブルを作成する基本ステップまとめ
FlaskでSQLAlchemyを使ってテーブルを作成する基本ステップまとめ

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

生徒

「Flask(フラスク)って何ですか?聞いたことあるけどよく分かりません……」

先生

「Flaskは、Pythonでウェブサイトやウェブアプリを作るためのとても軽量なフレームワークです。料理でいうと、材料が少なくてカスタマイズ自由なレシピのようなものです。」

生徒

「へぇ~!じゃあそのFlaskを使って、データを保存するテーブルを作るにはどうすればいいんですか?」

先生

「とても良いところに気がつきましたね。FlaskではSQLAlchemy(エスキューエル・アルケミー)という拡張機能を使うことで、データベースのテーブル作成がとても簡単にできるんです。今日はその基本ステップを一緒に学んでいきましょう!」

1. FlaskとSQLAlchemyとは?

1. FlaskとSQLAlchemyとは?
1. FlaskとSQLAlchemyとは?

まずは、「Flask」と「SQLAlchemy」がどんな役割を持っているのか、初心者の方にも分かりやすいようにイメージを使って説明していきます。Flask(フラスク)は、PythonでWebアプリを作るための“シンプルな土台”です。余計な機能が付いていないため、自分のペースで必要な機能だけを追加できるのが特徴です。

一方で、アプリを作ると「ユーザー情報を保存したい」「投稿データを残したい」といった“データの保管場所”が必要になります。ここで登場するのがSQLAlchemy(エスキューエル・アルケミー)です。これは、Pythonでデータベースを簡単に操作できるようにしてくれる便利な道具です。

たとえば、次のようにPythonのコードだけでデータの保存ができるようになります。


# ▼ SQLAlchemyのイメージ:データを保存する仕組みを簡単に使える
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Sample(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String(50))

料理に例えると、Flaskは“キッチン”で、SQLAlchemyは“炊飯器”のような役目です。キッチンだけではご飯は炊けませんが、炊飯器があれば誰でも同じようにご飯を炊けますよね。データの保存や取り出しも、難しい操作なしで扱えるようになります。

FlaskとSQLAlchemyを組み合わせることで、初心者でも本格的なWebアプリを作れるようになります。まずは役割をしっかり理解しておくと、このあと学ぶテーブル作成などのステップもスムーズに進められますよ。

2. 必要なファイルを準備しよう

2. 必要なファイルを準備しよう
2. 必要なファイルを準備しよう

まずは、必要な道具を揃えましょう。以下のようなファイル構成を作ります。


myapp/
├── app.py
└── models.py

このようにファイルを分けることで、見やすく、管理しやすくなります。

3. FlaskとSQLAlchemyをインストール

3. FlaskとSQLAlchemyをインストール
3. FlaskとSQLAlchemyをインストール

パソコンにFlaskとSQLAlchemyをインストールするには、コマンドというものを使います。


pip install flask flask_sqlalchemy

これは「フラスクとエスキューエル・アルケミーを使えるようにする」という意味です。

4. アプリの設定をしてみよう

4. アプリの設定をしてみよう
4. アプリの設定をしてみよう

app.pyというファイルを作って、Flaskアプリの基本設定を行います。


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# データベースの保存場所(ファイル名)を指定します
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'

# SQLAlchemyを初期化します
db = SQLAlchemy(app)

# モデル(テーブルの設計図)を読み込みます
from models import User

# 初めてのときだけ、テーブルを作成します
with app.app_context():
    db.create_all()

5. モデルを作ってテーブルを設計しよう

5. モデルを作ってテーブルを設計しよう
5. モデルを作ってテーブルを設計しよう

models.pyファイルで、テーブルの設計図を作ります。この設計図を「モデル」と呼びます。


from app import db

# ユーザーという名前のテーブルを作ります
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)  # ID(番号)
    name = db.Column(db.String(50), nullable=False)  # 名前
    email = db.Column(db.String(100), unique=True, nullable=False)  # メールアドレス

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

db.Columnとは「このテーブルのこの列にはこういうデータが入りますよ」という意味の指定です。

6. テーブルを実際に作成してみよう

6. テーブルを実際に作成してみよう
6. テーブルを実際に作成してみよう

先ほどのapp.pyの中にある、db.create_all()という命令がポイントです。これは「モデルの内容を元に、実際のデータベースファイル(example.db)にテーブルを作ってください」という意味です。

このファイルを実行すれば、自動的にexample.dbというファイルができて、中にUserテーブルが作成されます。


python app.py

このようにして、FlaskとSQLAlchemyを使ってテーブルを簡単に作ることができます。

7. うまくいっているか確認しよう

7. うまくいっているか確認しよう
7. うまくいっているか確認しよう

テーブルがちゃんと作られているか確認するには、example.dbというファイルを「DBブラウザ for SQLite」などの無料アプリで開いてみましょう。

すると「user」という名前のテーブルがあることが確認できるはずです。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者の方がよく間違えるのが、モデルファイル(models.py)を読み込んでいないことです。Flaskアプリの中でモデルをimportしないと、create_all()は何も作ってくれません。

また、アプリの実行時は必ずapp.app_context()を使って「アプリの状態の中で実行しますよ」と教えてあげる必要があります。

9. SQLiteってなに?なぜ使うの?

9. SQLiteってなに?なぜ使うの?
9. SQLiteってなに?なぜ使うの?

SQLite(エスキューエル・ライト)は、とても軽くてシンプルなデータベースです。特別な設定なしに、1つのファイルに全部のデータを保存できます。

だから初心者にはぴったり!練習や勉強には最適なデータベースです。

まとめ

まとめ
まとめ

FlaskとSQLAlchemyを組み合わせてテーブルを作成する一連の流れは、初心者にとって最初は少し難しく感じるかもしれませんが、全体の流れをひとつずつ丁寧にたどっていけば自然と理解が深まっていくものです。とくに、Flaskという軽量なフレームワークと、SQLAlchemyという柔軟で扱いやすいデータベース操作の仕組みは、とても相性が良く、初めてPythonでWebアプリケーションを作る方にとっては学習しやすい環境といえます。今回の学習では、アプリの構成、環境設定、モデルの作成、テーブルの生成という、実際の開発でも頻繁に行われる重要な流れをひと通り体験することができました。これらの手順は実務でも基本中の基本となるため、何度か繰り返し練習することでより確実に身につけることができます。 また、初心者がよくつまずくポイントとして、モデルファイルの読み込み忘れやアプリケーションコンテキストの不足などがありますが、これらは実際に手を動かしてエラーを経験することで「こうしておけばよかったのか」と自然と理解が深まる部分でもあります。プログラミングは教科書で読むより実際に試してみることで身につく部分がとても多く、今回紹介したコードを何度も編集して動かすことで、仕組みが体に馴染んでいきます。 さらに、SQLiteのような扱いやすいデータベースは学習用として最適で、複雑な設定や環境準備をしなくてもすぐに練習が始められるのが魅力です。PythonとFlask、そしてSQLAlchemyを使ってテーブルを作り、データを保存し、取り出してみるところまで進むと、より実践的なWebアプリケーション開発へと大きく一歩前進できます。今回のまとめでは、単なる用語説明だけでなく、どのような場面でどのように使うのかを実例を交えて振り返ることで、学んだ内容がしっかりと整理され、次に進むための足がかりとなるよう心がけました。 今後さらに理解を深めるためには、作成したモデルに新しい項目を追加してみたり、複数のテーブルを関連づけてみたり、フォームからユーザー情報を入力してデータベースに保存される仕組みを作ってみるなど、実際のアプリに近い構成を少しずつ取り入れてみるのがおすすめです。自分で考えたアイデアを形にすることで、これまで理解がぼんやりしていた部分も自然と明確になっていきます。プログラミングを続けていくと、ひとつの機能を作るためにいくつかのステップや知識が必要であることを実感しますが、その積み重ねこそが理解を深める最も確かな方法です。 ここまで来られた方は、FlaskとSQLAlchemyの基本的な流れを十分に把握できています。テーブル作成はアプリケーション開発の基礎中の基礎ですが、しっかりと仕組みを理解しておくことで、後々より高度なアプリケーションを組む際にも必ず役に立ちます。これを機に、モデルの定義、データのバリデーション、リレーションの設定、そしてアプリケーション全体の構造設計など、より深いテーマにも積極的に挑戦してみてください。

サンプルコードでもう一度復習しよう

次は少し応用したサンプルコードです。モデルに日時データを追加する簡単な例です。


from app import db
from datetime import datetime

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

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

このように、日付情報を追加することで、いつ登録されたユーザーかがひと目でわかります。実際のアプリ開発では、こういった項目を適切に設計することがとても重要であり、ユーザー管理機能や記事管理システムなど、さまざまな場面で必要となります。今回のまとめでは、基本の復習に加えて一歩進んだ例を紹介することで、次の学習へ進む準備が自然とできるよう意識しました。

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

生徒「今日の内容を振り返ってみると、テーブルを作る仕組みがだいぶ分かってきました!SQLAlchemyって難しそうに見えたけど、実際に使ってみると案外覚えやすかったです。」

先生「その調子ですよ。コードに触れてみると自然と理解が深まっていくものです。今回の流れをしっかり身につければ、次にデータの追加や更新、削除などもスムーズに理解できるようになります。」

生徒「次はユーザー情報を一覧で表示したり、フォームから登録できるようにしてみたいです!」

先生「とても良いですね。Webアプリはテーブルを作るところから大きく発展できます。次のステップでは、実際に画面から入力してデータベースに保存される流れを体験してみましょう。」

生徒「はい!今日の内容が分かったので、次も楽しみです!」

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

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

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

Flaskとは何ですか?Pythonでどんなことができるフレームワークですか?

Flaskとは、PythonでWebアプリケーションを作るための軽量なフレームワークです。設定が少なく自由度が高いため、初心者にも扱いやすく、シンプルなウェブサイトやAPIなどを短時間で作成できます。
カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策