投稿

[Python 100日チャレンジ] Day 85 - FlaskとSQLite連携

FlaskアプリからSQLiteへ接続し、Webフォームのデータを保存する基本構成を学びます。

[Python 100日チャレンジ] Day 85 - FlaskとSQLite連携

WebアプリにDBをつなぐ

Flaskだけではデータを長く保存できません。SQLiteと組み合わせることで、フォームから送信された内容や投稿データを保存できます。

1
2
3
4
5
6
import sqlite3

def get_db():
    conn = sqlite3.connect("app.db")
    conn.row_factory = sqlite3.Row
    return conn

テーブルを作る

1
2
3
4
5
CREATE TABLE posts (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    body TEXT NOT NULL
);

フォーム内容を保存する

1
2
3
4
5
6
7
db = get_db()
db.execute(
    "INSERT INTO posts (title, body) VALUES (?, ?)",
    (title, body),
)
db.commit()
db.close()

一覧表示する

1
posts = db.execute("SELECT id, title FROM posts ORDER BY id DESC").fetchall()

取得したデータをJinja2テンプレートへ渡して表示します。

今日のゴール

FlaskとSQLiteを連携すると、入力、保存、一覧表示までできるWebアプリになります。データベース接続を関数化し、SQLを安全に実行しましょう。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。