⑦Pythonプログラミング

PythonでSQLiteデータベースを操作する【CRUD完全ガイド】

⑦Pythonプログラミング
記事内に広告が含まれています。

PythonでSQLiteを使ったデータベース操作を解説します。SQLiteはファイル1つで動くデータベースで、Pythonに標準で含まれています。

SQLiteデータベースの基本操作

import sqlite3

# データベースの作成・接続
conn = sqlite3.connect("mydb.sqlite")
conn.row_factory = sqlite3.Row  # 辞書形式でアクセス可能にする
cur = conn.cursor()

# テーブルの作成
cur.execute("""
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        email TEXT UNIQUE
    )
""")
conn.commit()

CRUD操作

# INSERT(プレースホルダーでSQLインジェクションを防ぐ)
cur.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)",
            ("Taro", 25, "taro@example.com"))
conn.commit()

# SELECT
cur.execute("SELECT * FROM users WHERE age > ?", (20,))
for row in cur.fetchall():
    print(dict(row))

# UPDATE
cur.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Taro"))
conn.commit()

# DELETE
cur.execute("DELETE FROM users WHERE name = ?", ("Taro",))
conn.commit()

conn.close()

with文でコネクションを安全に管理

with sqlite3.connect("mydb.sqlite") as conn:
    conn.row_factory = sqlite3.Row
    cur = conn.cursor()
    cur.execute("SELECT * FROM users")
    users = [dict(row) for row in cur.fetchall()]
print(users)

まとめ

  • sqlite3はPython標準ライブラリで追加インストール不要
  • プレースホルダー(?)を使うことでSQLインジェクションを防げる
  • conn.row_factory = sqlite3.Rowで辞書形式のアクセスができる
  • with文でコネクションを安全に管理できる

コメント

タイトルとURLをコピーしました