🌆

🗃 FlaskでSQLiteとSQLAlchemyを使う基本入門

に公開

📝 はじめに

Flaskでユーザー情報や投稿内容などを保存・管理したいとき、データベースとの連携は不可欠です。特に、軽量でシンプルに使えるSQLiteと、Pythonのオブジェクト指向と相性が良いSQLAlchemyは、Flaskと組み合わせることでとても扱いやすくなります。
この記事では、SQLiteとSQLAlchemyを使って、Flaskアプリケーションにおける基本的なデータベース操作(CRUD)の方法を、初心者にもわかりやすく丁寧に解説します。

✅ この記事で学べること

  • SQLAlchemyの特徴と基本概念
  • FlaskでSQLAlchemyを使う準備方法
  • データベーステーブル(モデル)の定義方法
  • データベースの作成手順
  • 基本的なデータ操作(追加・取得・更新・削除)
  • アプリ全体のデータフローの理解

🧰 ライブラリのインストール

まずは必要なライブラリをインストールします。flaskとflask_sqlalchemyをインストールしてください。

pip install flask flask_sqlalchemy

これでFlaskとSQLAlchemyの準備は完了です。開発環境には仮想環境(venv)を使うことを推奨します。

⚙️ Flaskアプリの設定と初期化

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///sample.db'  # SQLiteファイルを作成
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

ここではsample.dbという名前のSQLiteデータベースファイルをルートディレクトリに作成します。
SQLALCHEMY_TRACK_MODIFICATIONS はメモリ使用量を減らすために False にしておきましょう。

🏗️ モデル(テーブル)の作成

SQLAlchemyでは、Pythonのクラスでデータベースのテーブルを表現します。このクラスのことを「モデル」と呼びます。

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

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

このUserクラスを作成することで、自動的にusersというテーブルが生成されます。

  • id:主キー(自動で一意の値が振られます)
  • username:ユニークな文字列(重複不可)
  • email:ユニークでNULL不可な文字列

🔧 データベースの作成

モデル定義が完了したら、データベースファイルとテーブルを作成します。

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

Flaskではapp_context()の中でデータベース操作を行う必要があります。これを忘れるとエラーになります。
このコマンドは、一度だけ実行すればOKです。

✍️ データの追加・取得・更新・削除(CRUD)

✅ データの追加(Create)

new_user = User(username='taro', email='taro@example.com')
db.session.add(new_user)
db.session.commit()

add()でデータを登録し、commit()で反映します。

🔍 データの取得(Read)

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

他にも .filter_by()や .first()を使って条件を指定できます。

user = User.query.filter_by(username='taro').first()
print(user.email)

📝 データの更新(Update)

user = User.query.filter_by(username='taro').first()
user.email = 'new_email@example.com'
db.session.commit()

オブジェクトを編集して、commit()で保存します。

❌ データの削除(Delete)

user = User.query.filter_by(username='taro').first()
db.session.delete(user)
db.session.commit()

削除したい対象を指定して、delete() と commit() を呼びます。

📌 まとめ

  • SQLAlchemyを使えば、SQL文を書くことなくPythonだけでDB操作が可能です
  • モデル定義により、テーブル構造を明確に設計できる
  • CRUD操作(追加、取得、更新、削除)は非常にシンプルに記述できる
  • 実際のアプリでは、これらをルーティングやフォーム入力と組み合わせて使います

株式会社ONE WEDGE

【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp/

Discussion