SQLiteをFlaskアプリケーションで使用する方法についての完全かつ包括的な記事を以下に示します。
SQLiteとは?
SQLiteは、軽量で自己完結型のリレーショナルデータベースエンジンです。多くのアプリケーションで使用されるこのデータベースは、外部サーバーを必要とせず、単一のファイルにデータを保存することができるため、特に小規模なプロジェクトやデスクトップアプリケーションに最適です。

FlaskアプリケーションでSQLiteを使用すると、データベースの設定が非常に簡単で、アプリケーションのパフォーマンスやスケーラビリティを保ちながら、リレーショナルデータベースの利便性を享受できます。
FlaskとSQLiteのセットアップ
必要なライブラリのインストール
まず、FlaskとSQLiteを利用するために必要なライブラリをインストールします。FlaskはPythonのWebフレームワークで、SQLiteは標準でPythonに組み込まれているため、追加のインストールは不要ですが、Flask-SQLAlchemyなどのORM(オブジェクト関係マッピング)ツールを使うと便利です。
bashpip install Flask pip install Flask-SQLAlchemy
Flaskアプリケーションの作成
次に、Flaskアプリケーションを作成し、SQLiteを設定します。以下に基本的な構成を示します。
pythonfrom flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# SQLiteデータベースのURIを設定
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
# データベースの変更追跡を無効にする
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# SQLAlchemyのインスタンスを作成
db = SQLAlchemy(app)
# データベースモデルの定義
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(120), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f"User('{self.username}', '{self.email}')"
# アプリケーションのルート
@app.route("/")
def home():
users = User.query.all()
return render_template("home.html", users=users)
if __name__ == "__main__":
app.run(debug=True)
データベースの初期化
Flaskアプリケーションを最初に実行する際、SQLiteのデータベースファイル(site.db
)を作成し、モデルに基づいてテーブルを初期化する必要があります。これを行うために、以下のコマンドをPythonシェルまたは別のスクリプトで実行します。
pythonfrom app import db
db.create_all()
これでSQLiteデータベースが作成され、User
テーブルが作成されます。
SQLiteを使ったCRUD操作
データの追加(Create)
新しいユーザーをデータベースに追加するためには、User
モデルのインスタンスを作成し、それをデータベースにコミットします。
python@app.route("/add", methods=["POST"])
def add_user():
if request.method == "POST":
username = request.form["username"]
email = request.form["email"]
new_user = User(username=username, email=email)
db.session.add(new_user)
db.session.commit()
return redirect("/")
データの読み取り(Read)
データベースから全てのユーザーを取得し、テンプレートに渡すことで表示できます。
python@app.route("/")
def home():
users = User.query.all()
return render_template("home.html", users=users)
データの更新(Update)
既存のユーザー情報を更新するために、ユーザーIDを指定してデータを取得し、変更を加えます。
python@app.route("/update/" , methods=["GET", "POST"])
def update_user(id):
user = User.query.get_or_404(id)
if request.method == "POST":
user.username = request.form["username"]
user.email = request.form["email"]
db.session.commit()
return redirect("/")
return render_template("update.html", user=user)
データの削除(Delete)
ユーザーを削除するには、対象のユーザーIDを指定して削除操作を行います。
python@app.route("/delete/" )
def delete_user(id):
user = User.query.get_or_404(id)
db.session.delete(user)
db.session.commit()
return redirect("/")
テンプレートの作成
home.html
やupdate.html
などのHTMLファイルを作成し、データを表示・操作できるインターフェースを作成します。
html
html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ユーザー管理title>
head>
<body>
<h1>ユーザー一覧h1>
<a href="/add">ユーザーを追加a>
<ul>
{% for user in users %}
<li>{{ user.username }} - {{ user.email }}
<a href="/update/{{ user.id }}">編集a>
<a href="/delete/{{ user.id }}">削除a>li>
{% endfor %}
ul>
body>
html>
セッション管理
SQLiteを使用するFlaskアプリケーションでは、ユーザーのログイン情報やその他のセッションデータを管理するために、Flaskのsession
機能を使用することができます。
pythonfrom flask import session
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
username = request.form["username"]
user = User.query.filter_by(username=username).first()
if user:
session["user_id"] = user.id
return redirect("/")
return render_template("login.html")
まとめ
SQLiteは軽量で使いやすいため、Flaskアプリケーションに組み込むのは非常に簡単です。FlaskとSQLiteの組み合わせを使うことで、データベース操作が簡素化され、迅速な開発が可能になります。上記のコード例を基にして、さらに複雑なデータベース操作を行うことができます。Flask-SQLAlchemyを使用することで、ORMを活用した直感的なデータ操作も可能です。
SQLiteを使用したFlaskアプリケーションは、特に小規模なプロジェクトに最適です。データベースのセットアップや管理が簡単で、学習コストが低いため、初心者にとっても非常に有用です。
このガイドは、FlaskアプリケーションでSQLiteを使用する基本的な手順を示しています。データベース操作を学び、より高度な機能を追加することができます。