Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonとSQLiteで学ぶSQLデータベース操作の基本

はじめに

この記事では、PythonとSQLiteデータベースを使ってSQLを操作する方法を解説します。PythonにはSQLiteに接続するための標準モジュール「sqlite3」が組み込まれており、追加のインストールなしですぐにデータベース操作を始められます。

SQLiteデータベースへの接続手順

PythonからSQLiteデータベースに接続するには、以下の3つのステップに従います。

  • sqlite3モジュールをインポートする
  • sqlite3.connect(db_name)メソッドで接続を作成する。引数にはデータベース名を指定します。指定した名前のファイルが存在しない場合は新しく作成され、すでに存在する場合はそのファイルが開かれます。
  • conn.cursor()メソッドでカーソルオブジェクトを取得する。カーソルはPythonとSQLiteデータベースの仲介役であり、SQLコマンドの実行には必ずこのカーソルオブジェクトを使用します。

以上のステップでSQLiteデータベースとの接続が確立されます。この流れは、Pythonで他のデータベースを扱う場合でもほぼ共通しています。イメージがつかない場合は、次のサンプルコードを参考にしてください。

# モジュールのインポート
import sqlite3

# 接続の作成
conn = sqlite3.connect("tutorialspoint.db")  # db = データベース

# カーソルオブジェクトの取得
cursor = conn.cursor()

テーブルの作成とデータの挿入

接続ができたら、SQLクエリを使って実際にテーブルを作成してみましょう。以下の手順で進めます。

  • カラム名とデータ型を指定したテーブル作成用のSQLコードを書く
  • cursor.execute()メソッドでSQLを実行し、データベース内にテーブルを作成する
  • テーブルへ行(レコード)を挿入するSQLコードを書き、同じ方法で実行する
  • conn.commit()メソッドで変更をコミットし、ファイルに保存する
  • conn.close()メソッドで接続を閉じる
# モジュールのインポート
import sqlite3

# 接続の作成
conn = sqlite3.connect("tutorialspoint.db")  # db = データベース

# カーソルオブジェクトの取得
cursor = conn.cursor()

# テーブル作成用のSQLコード
create_table_sql = """
CREATE TABLE students (
    id INTEGER PRIMARY KEY,
    first_name VARCHAR(20),
    last_name VARCHAR(30),
    gender CHAR(1)
);
"""
# 上記のSQLを実行してテーブルを作成
cursor.execute(create_table_sql)

# studentsテーブルへのデータ挿入
insert_student_one_sql = """INSERT INTO students VALUES (1, "John", "Hill", "M");"""
cursor.execute(insert_student_one_sql)

insert_student_two_sql = """INSERT INTO students VALUES (2, "Jessy", "Hill", "F");"""
cursor.execute(insert_student_two_sql)

insert_student_three_sql = """INSERT INTO students VALUES (3, "Antony", "Hill", "M");"""
cursor.execute(insert_student_three_sql)

# commitメソッドで変更を保存
conn.commit()

# 接続を閉じる
conn.close()

上記のコードがエラーなく実行できれば、テーブルの作成とデータの登録は成功です。

データベースからデータを取得する方法

次に、テーブルに保存したデータを取り出す方法を見ていきましょう。以下の手順でコードを書きます。

  • データベースに接続する
  • カーソルオブジェクトを作成する
  • 必要なデータを取得するSQLクエリを書く
  • クエリを実行する
  • fetchall()メソッドでカーソルから結果を取り出す
  • print()でデータを表示して確認する
# モジュールのインポート
import sqlite3

# 接続の作成
conn = sqlite3.connect("tutorialspoint.db")  # db = データベース

# カーソルオブジェクトの取得
cursor = conn.cursor()

# 全学生データを取得するSQLクエリ
fetch_students_sql = """
SELECT * FROM students;
"""

# SQLクエリを実行
cursor.execute(fetch_students_sql)

# fetchall()メソッドで結果を変数に格納
students = cursor.fetchall()  # タプルのリストが返る

# データを表示
print(students)

プログラムを実行すると、以下のような出力が得られます。fetchall()メソッドは、各行をタプルとしたリスト形式で結果を返します。

実行結果

[(1, 'John', 'Hill', 'M'), (2, 'Jessy', 'Hill', 'F'), (3, 'Antony', 'Hill', 'M')]

補足:プレースホルダーによる安全なデータ挿入

実際の開発では、SQL文に値を直接埋め込むのではなく、プレースホルダー「?」を使うことが推奨されています。これにより、SQLインジェクションなどのセキュリティリスクを防げます。

# プレースホルダーを使った安全な挿入例
cursor.execute("INSERT INTO students VALUES (?, ?, ?, ?);", (4, "Mike", "Brown", "M"))
conn.commit()

まとめ

これで、PythonとSQLiteを使ったデータベース操作の基本が身につきました。接続、テーブル作成、データの挿入・取得という一連の流れは、どのデータベースを扱う際にも応用できる重要なスキルです。まずはこの記事のサンプルコードを実際に動かし、さまざまなSQLクエリを試しながら理解を深めていきましょう。

  1. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c

  2. MacでPython 3にアップグレードして使いこなす方法

    購入したばかりの新しいMacには、必要なソフトウェアの最新版がすべて入っていると思いがちですが、ユーザー向けアプリについては概ね正しくても、基盤となるフレームワークに関しては話が別です。安定版の最新リリースがPython 3.5であるにもかかわらず、新しいMacには今なおPython 2.7.10がプリインストールされています。バージョン間の差が大きく感じられるのはそのためです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python 3はPython 2との後方互換性を持たず、多くの開発者は依然としてPython 2を使い続けているのです。 2to3を使うか、使わないか?