【Python】第7章第14回:SQLとの連携:データベース操作
本記事では、Pythonを使用してSQLデータベースを操作する方法を学びます。SQLiteを中心に解説し、簡単なクエリから応用例までを網羅します。
0. 記事の概要
この記事を読むメリット
- データ管理スキルの向上:SQLとPythonを組み合わせたデータベース操作が可能になります。
- 業務での応用力:Pythonで効率的にデータを取得、加工、保存できるようになります。
- 実践的なスキル:データベースを使用したアプリケーションの構築が学べます。
この記事で学べること
- SQLとPythonの連携方法
- SQLiteを使った基本的なデータベース操作
- PythonでのSQLクエリの記述と実行
1. SQLとPythonの連携の概要
1.1 SQLとは?
SQL(Structured Query Language)は、データベースを操作するための言語です。主に以下の目的で使用されます。
- データの保存、取得、更新、削除
- データの検索と集計
- データの管理と制御
1.2 PythonでSQLを操作するメリット
PythonでSQLを操作する主な利点は以下の通りです。
- Pythonの豊富なライブラリを活用して効率的にデータ操作が可能
- データ処理とプログラムロジックを統合できる
- 自動化スクリプトやデータ分析ワークフローに組み込める
2. SQLiteを使った基本操作
2.1 SQLiteとは?
SQLiteは、軽量でシンプルな組み込み型のデータベースエンジンです。以下の特徴があります。
- インストールが不要で、Pythonに標準搭載されている
- ローカルで動作し、小規模データベースに最適
- SQL標準をサポート
2.2 データベースの作成と接続
# SQLiteデータベースの作成と接続
import sqlite3
# データベースに接続(存在しない場合は作成される)
connection = sqlite3.connect("example.db")
# カーソルオブジェクトを作成
cursor = connection.cursor()
# テーブルの作成
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
print("データベースとテーブルが作成されました。")
# 接続を閉じる
connection.close()
動作解説
- データベース接続:
sqlite3.connect()
を使用してデータベースに接続。 - テーブル作成:
CREATE TABLE
文でデータベース内にテーブルを作成。 - 接続終了: 使用後に必ず
connection.close()
で接続を閉じます。
3. データの挿入とクエリ
3.1 データの挿入
# データの挿入
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# データを挿入
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 30))
# 変更を保存
connection.commit()
print("データが挿入されました。")
connection.close()
3.2 データのクエリ
# データのクエリ
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# データを取得
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
connection.close()
動作解説
- データ挿入:
INSERT INTO
文でデータをテーブルに追加。 - データクエリ:
SELECT
文でテーブル内のデータを取得。 - 変更の保存: データベースに変更を反映するには
connection.commit()
が必要。
4. 練習問題
以下の課題に挑戦してみましょう。
- SQLiteを使って「products」というテーブルを作成してください(列名: id, name, price)。
- 「products」テーブルに3件のデータを挿入してください。
- 「products」テーブルから価格が1000以上の製品をクエリしてください。
5. 練習問題の解答と解説
問1〜3の解答例
# 問1: テーブル作成
cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price INTEGER
)
''')
# 問2: データ挿入
cursor.execute("INSERT INTO products (name, price) VALUES (?, ?)", ("Laptop", 1200))
cursor.execute("INSERT INTO products (name, price) VALUES (?, ?)", ("Mouse", 800))
cursor.execute("INSERT INTO products (name, price) VALUES (?, ?)", ("Keyboard", 1500))
connection.commit()
# 問3: データクエリ
cursor.execute("SELECT * FROM products WHERE price >= 1000")
rows = cursor.fetchall()
for row in rows:
print(row)
6. まとめ
本記事では、Pythonを使用してSQLデータベースを操作する基本的な方法を学びました。これを応用して、データベースを活用したアプリケーションを作成してみましょう。