Pythonでデータベースを操作する方法!初心者でもわかるSQLの基本と応用
生徒
「Pythonでデータベースを使ってみたいんですが、どうやって操作するんですか?そもそもデータベースがよく分かりません。」
先生
「PythonではSQLという言語を使ってデータを追加したり取り出したりできますよ。データベースは情報を整理して保存するための便利な仕組みです。」
生徒
「ファイルに保存するのと何が違うんですか?」
先生
「ファイルは一つのまとまりですが、データベースは大きな箱の中に表のような形でたくさんの情報を並べて保存できます。必要な情報だけを素早く探せるのが特徴です。」
生徒
「なるほど。じゃあPythonで実際に操作する方法を知りたいです!」
先生
「それでは、Pythonで使いやすいSQLiteを例にして、基本から応用まで順番に解説していきましょう。」
1. Pythonで使えるデータベースとSQLiteの特徴
Pythonではさまざまなデータベースを扱うことができます。代表的なものに、機能が豊富で大規模なシステムでも使われるMySQLやPostgreSQLがありますが、初心者にはSQLiteが扱いやすくおすすめです。SQLiteは特別な準備が不要で、Pythonに標準搭載されているためすぐに使い始めることができます。複雑な設定なしでデータを整理して保存できるため、学習用としても実務用としても非常に便利です。
データベースは大きな表を管理する仕組みで、表はテーブルと呼ばれます。テーブルには名前や年齢などの情報を縦横に並べて保存します。PythonからSQLを使って操作することで、情報を追加したり修正したり削除したりできます。
2. SQLiteを使った基本的な接続方法
PythonでSQLiteを使うには、標準ライブラリのsqlite3を読み込むだけです。最初に接続を作り、その中でSQLを実行します。接続はファイルのように開いたり閉じたりする必要があるので気をつけましょう。
import sqlite3
conn = sqlite3.connect("sample.db")
cursor = conn.cursor()
このコードでは、sample.dbという名前のデータベースを作成し、cursorという操作専用の道具を手に入れています。もしファイルが存在していなければ自動で作成されます。
3. テーブルを作るSQL文を理解しよう
データベースを使うためには、表の役割をするテーブルを準備します。テーブルは行と列で構成され、列には名前や年齢などの項目が設定されます。例えば、ユーザー情報を保存したいときは名前、年齢、メールアドレスなどを列として用意します。
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
)
""")
conn.commit()
SQLのCREATE TABLE文はテーブルを作成する命令です。IF NOT EXISTSを付けることで、既にテーブルがある場合は作り直さずにそのまま続行できます。AUTOINCREMENTは番号を自動で増やしてくれる機能で、登録するごとにidが自動で割り振られます。
4. SQLでデータを追加する方法
次はテーブルにデータを追加する手順です。追加する操作はINSERT文で行います。実際にPythonからSQLを呼び出すときは、変数を使って安全にデータを渡すことができます。
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("たろう", 20))
conn.commit()
VALUESの中に?を使うことで、入力された値を安全に渡せます。直接文字を埋め込む方法もありますが、安全性の面から推奨されていません。commitを忘れるとデータが反映されないため注意が必要です。
5. データを取り出すSELECT文の基本
保存したデータを取り出したいときはSELECT文を使います。必要な情報だけを抽出できるため、データベースならではの便利な操作です。
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
SELECT * はすべての列を取り出すという意味です。fetchallを使うと結果をまとめて取得できます。for文で一つずつ取り出して表示することもできます。
6. 条件を指定して検索する応用テクニック
SELECT文は条件を指定することで、必要なデータだけを抽出できます。たとえば、二十歳以上のデータだけを取り出したい場合はWHEREを使います。
cursor.execute("SELECT * FROM users WHERE age >= ?", (20,))
rows = cursor.fetchall()
このように条件を絞り込むことで、必要な情報だけに限定して処理できるため、複雑なデータを扱うときにとても役立ちます。
7. データを更新するUPDATE文と削除するDELETE文
次は応用として、保存されているデータを書き換えたり削除したりする方法を解説します。UPDATE文は特定の行の値を変更する命令で、WHEREを使ってどのレコードを変更するかを指定します。
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (25, "たろう"))
conn.commit()
削除する場合はDELETE文を使います。こちらもWHEREを使って削除する対象を選びます。
cursor.execute("DELETE FROM users WHERE name = ?", ("たろう",))
conn.commit()
データを変更したり削除したりするときは、誤ってすべてのデータを消してしまわないように注意してください。
8. 実務で役立つポイントとPythonでの活用例
Pythonでデータベースを扱う場面は非常に多く、会員情報の管理や買い物履歴の整理、アプリの設定保存などさまざまな用途で使われています。複数のデータを一括で管理できるため、規模が大きくなるほどデータベースの利便性が高まります。初心者のうちはSQLiteで基礎を身につけ、その後必要に応じてMySQLやPostgreSQLに進むと理解が深まりやすくなります。
Pythonとデータベースを組み合わせることで、アプリケーションの幅は大きく広がります。検索して取り出す、追加する、変更するなどの操作を覚えることで、実際のシステム開発にも応用できるようになります。仕組みを理解して繰り返し練習することで、自然と扱いに慣れていきます。