投稿

[Python 100日チャレンジ] Day 78 - PythonとSQLiteでCRUDを作る

Pythonのsqlite3でCRUD関数を作り、データベース操作を再利用しやすい形に整理します。

[Python 100日チャレンジ] Day 78 - PythonとSQLiteでCRUDを作る

CRUDとは

CRUDは、Create、Read、Update、Deleteの頭文字です。アプリでデータを扱う基本操作を表します。

関数に分ける

get_connection()はDBファイルへ接続するだけで、usersテーブルは作りません。前に扱ったid、name、email列を持つテーブルを同じ作業フォルダのapp.dbに用意してから使います。関数定義だけでは操作は行われないので、作成 → 一覧取得 → メール更新 → 再取得の順に呼び出し、同じユーザーの変化を追ってみましょう。

1
2
3
4
5
6
7
8
9
10
11
import sqlite3

def get_connection():
    return sqlite3.connect("app.db")

def create_user(name, email):
    with get_connection() as conn:
        conn.execute(
            "INSERT INTO users (name, email) VALUES (?, ?)",
            (name, email),
        )

接続やSQLを関数にまとめると、同じ処理を何度も書かずに済みます。

読み取り関数

1
2
3
4
def list_users():
    with get_connection() as conn:
        cursor = conn.execute("SELECT id, name, email FROM users")
        return cursor.fetchall()

一覧取得、1件取得、検索などを用途ごとに分けます。

更新と削除

1
2
3
4
5
6
7
def update_email(user_id, email):
    with get_connection() as conn:
        conn.execute("UPDATE users SET email = ? WHERE id = ?", (email, user_id))

def delete_user(user_id):
    with get_connection() as conn:
        conn.execute("DELETE FROM users WHERE id = ?", (user_id,))

今日のゴール

PythonとSQLiteを組み合わせると、小さなアプリのデータ保存機能を作れます。CRUDを関数化して、使いやすいデータアクセス層にしましょう。

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