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