SQLとPythonの連携について徹底解説
PythonとSQLを連携させることは、データベースを操作し、分析やアプリケーション開発に活かすうえで非常に重要です。Pythonは、その簡潔さと豊富なライブラリによって、データベースに接続しSQLクエリを実行するのが非常に簡単です。一方で、SQLはリレーショナルデータベースにおいてデータを効率よく操作・管理できる標準的な言語です。
本記事では、PythonとSQLを連携させる方法について、初心者でも理解しやすいように具体例を交えながら解説していきます。主に次の3つのアプローチを取り上げます。
- PythonでSQLiteデータベースを操作する
- PythonでMySQLに接続してクエリを実行する
- PythonでPostgreSQLを扱う方法
PythonでSQLiteデータベースを操作する
まず、PythonでのSQL操作の基本を学ぶために、SQLiteを使用します。SQLiteは軽量で、ファイルベースのデータベース管理システムです。Pythonには標準でsqlite3
モジュールが組み込まれており、追加のインストールを必要としません。
SQLiteデータベースの作成と接続
以下のコードは、PythonでSQLiteデータベースに接続する基本的な方法です。データベースが存在しない場合、自動的に作成されます。
import sqlite3 # データベースに接続(ファイルが存在しない場合は新規作成される) conn = sqlite3.connect('example.db') # カーソルを作成 cursor = conn.cursor()
このコードでは、example.db
という名前のSQLiteデータベースに接続しています。データベースが存在しない場合は、新しく作成されます。cursor
オブジェクトは、SQLクエリを実行するために使います。
テーブルの作成とデータの挿入
次に、SQLのCREATE TABLE
文を使ってテーブルを作成し、データを挿入する方法を紹介します。
# テーブルを作成 cursor.execute('''CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER )''') # データの挿入 cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 25)") cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 30)") # 変更をコミット(保存) conn.commit()
このコードは、users
という名前のテーブルを作成し、2つのデータ(Alice
とBob
)を挿入します。
データの取得
次に、挿入したデータをSQLのSELECT
文を使って取得します。
# データを取得 cursor.execute("SELECT * FROM users") # 取得したデータを表示 rows = cursor.fetchall() for row in rows: print(row)
このコードでは、users
テーブル内のすべてのデータを取得し、それをループで表示します。実行結果は以下のようになります。
(1, 'Alice', 25) (2, 'Bob', 30)
データベースの接続を閉じる
最後に、作業が終わったらデータベースの接続を閉じます。
# 接続を閉じる
conn.close()
これで、PythonからSQLiteデータベースに接続してデータの挿入・取得ができるようになりました。
PythonでMySQLに接続してクエリを実行する
次に、PythonでMySQLデータベースに接続してSQLクエリを実行する方法を見ていきます。MySQLは、Web開発や大規模なシステムでよく使われるオープンソースのデータベースです。
MySQLに接続するには、mysql-connector-python
というライブラリを使用します。以下のコマンドでインストールします。
pip install mysql-connector-python
MySQLデータベースに接続
MySQLデータベースに接続するには、次のコードを使用します。
import mysql.connector # MySQLデータベースに接続 conn = mysql.connector.connect( host='localhost', user='root', password='your_password', database='your_database' ) # カーソルを作成 cursor = conn.cursor()
このコードでは、指定したホスト、ユーザー、パスワード、およびデータベース名を使ってMySQLに接続します。
テーブルの作成とデータの挿入
次に、テーブルを作成してデータを挿入します。
# テーブルを作成 cursor.execute('''CREATE TABLE IF NOT EXISTS employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), salary DECIMAL(10, 2) )''') # データの挿入 cursor.execute("INSERT INTO employees (name, salary) VALUES ('John', 50000)") cursor.execute("INSERT INTO employees (name, salary) VALUES ('Doe', 60000)") # 変更をコミット conn.commit()
データの取得
データを取得するために、次のSQLクエリを実行します。
# データを取得 cursor.execute("SELECT * FROM employees") # 取得したデータを表示 rows = cursor.fetchall() for row in rows: print(row)
実行結果は以下のようになります。
(1, 'John', Decimal('50000.00')) (2, 'Doe', Decimal('60000.00'))
接続を閉じる
最後に、MySQLデータベースの接続を閉じます。
# 接続を閉じる
conn.close()
これで、PythonからMySQLデータベースに接続し、データの挿入・取得ができました。
PythonでPostgreSQLを扱う方法
最後に、PythonでPostgreSQLデータベースに接続する方法について説明します。PostgreSQLは、オープンソースのオブジェクトリレーショナルデータベースで、データ整合性や拡張性に優れています。
PostgreSQLに接続するには、psycopg2
ライブラリを使用します。以下のコマンドでインストールします。
pip install psycopg2
PostgreSQLデータベースに接続
PostgreSQLに接続するためのコードは次の通りです。
import psycopg2 # PostgreSQLに接続 conn = psycopg2.connect( host='localhost', database='your_database', user='your_user', password='your_password' ) # カーソルを作成 cursor = conn.cursor()
テーブルの作成とデータの挿入
PostgreSQLでテーブルを作成し、データを挿入する例です。
# テーブルを作成 cursor.execute('''CREATE TABLE IF NOT EXISTS products ( id SERIAL PRIMARY KEY, name VARCHAR(255), price NUMERIC )''') # データの挿入 cursor.execute("INSERT INTO products (name, price) VALUES ('Laptop', 1200.99)") cursor.execute("INSERT INTO products (name, price) VALUES ('Phone', 799.99)") # 変更をコミット conn.commit()
データの取得
データを取得するためのクエリは次の通りです。
# データを取得 cursor.execute("SELECT * FROM products") # 取得したデータを表示 rows = cursor.fetchall() for row in rows: print(row)
実行結果は以下のようになります。
(1, 'Laptop', Decimal('1200.99')) (2, 'Phone', Decimal('799.99'))
接続を閉じる
PostgreSQLの接続を閉じるには、以下のコードを使用します。
# 接続を閉じる
conn.close()
まとめ
SQLとPythonの連携は、さまざまなデータベースに対してクエリを実行し、データを操作するための非常に強力なツールです。SQLiteのような軽量データベースから、MySQLやPostgreSQLのような大規模なデータベースまで、Pythonは柔軟に対応します。