SQLite - Python: 基礎ガイド

こんにちは、未来のデータベースの達人たち!SQLiteとPythonの世界に踏み込むこのエキサイティングな旅のガイドとして、あなた们を案内できることを嬉しく思います。私がコンピュータサイエンスを教えてきた経験から、このチュートリアルの終わりには、プロのようにデータベースを操作できるようになることを保証します。では、始めましょう!

SQLite - Python

インストール

冒険を始める前に、正しいツールを持っていることを確認する必要があります。好消息は、Pythonがインストールされている場合(私はそう想你しています)、SQLiteもすでにインストールされていることです!SQLiteはPythonと一緒にバンドルされていますので、追加のインストールは不要です。便利ですね?

Python sqlite3モジュールのAPI

さて、私たちのスター、sqlite3モジュールについて話しましょう。このモジュールは、PythonでSQLiteデータベースを操作するためのチケットです。このチュートリアルを通じて使用する関数とメソッドのセットを提供します。

以下是我们将要使用的主要方法的表格:

メソッド 説明
connect() データベースに接続します
cursor() SQLコマンドを実行するためのカーソルオブジェクトを作成します
execute() 単一のSQLコマンドを実行します
executemany() すべてのパラメーターシーケンスに対してSQLコマンドを実行します
commit() 現在のトランザクションをコミットします
rollback() 最後のcommit()以来的変更をデータベースから戻します
close() データベース接続を閉じます

これらが今は少し不思議に思えるかもしれませんが、進むにつれて詳細に説明します。

データベースに接続

まず、データベースに接続しましょう。データの家のドアをノックするようなものです!

import sqlite3

# データベースに接続(または存在しない場合は作成)
conn = sqlite3.connect('my_first_db.db')

print("データベース接続成功!")

# 終了時に接続を閉じることを忘れないでください
conn.close()

この例では、sqlite3モジュールをインポートし、そのconnect()関数を使用して、'my_first_db.db'という名前のデータベースに接続します。このデータベースが存在しない場合、SQLiteはそれを自動的に作成してくれます。どれだけ考え周到ですね!

テーブルの作成

接続が完了したので、テーブルを作成しましょう。テーブルは、データベース内のスプレッドシートのようなものです。

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# テーブルを作成
cursor.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER)''')

print("テーブル作成成功!")

conn.commit()
conn.close()

ここでは、'students'という名前のテーブルを作成し、id、name、ageという3つのカラムを定義します。IF NOT EXISTS句は、同じテーブルを偶然に2度作成してしまう場合のエラーを防止するためのセーフティネットです。

INSERT操作

テーブルにデータを追加する時がきました。スプレッドシートに記入するようなものです!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# 単一の行を插入
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Alice", 22))

# 複数の行を插入
students_data = [("Bob", 19), ("Charlie", 21), ("David", 20)]
cursor.executemany("INSERT INTO students (name, age) VALUES (?, ?)", students_data)

print("データ插入成功!")

conn.commit()
conn.close()

この例では、'students'テーブルにデータを插入しています。単一の插入にはexecute()を使用し、複数の插入にはexecutemany()を使用します。?マークはデータのプレースホルダーで、SQLインジェクション攻撃を防止するのに役立ちます。安全第一!

SELECT操作

さて、データを取得しましょう。データベースに何を覚えているかを尋ねるようなものです!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# studentsテーブルのすべての行を選択
cursor.execute("SELECT * FROM students")

# すべての行を取得
rows = cursor.fetchall()

for row in rows:
print(f"ID: {row[0]}, 名前: {row[1]}, 年齢: {row[2]}")

conn.close()

ここでは、'students'テーブルのすべての行を選択し、印刷します。SQLクエリの*は「すべてをくれ」という意味で、データベースに「開け!」と言うようなものです。

UPDATE操作

時々、データを変更する必要があります。生徒の年齢を更新してみましょう:

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# 生徒の年齢を更新
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (23, "Alice"))

print("データ更新成功!")

conn.commit()
conn.close()

この例では、'students'テーブルの特定の生徒の年齢を更新しています。

Credits: Image by storyset