Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

SQLとPythonの連携について徹底解説

SQLとPythonの連携について徹底解説

PythonとSQLを連携させることは、データベースを操作し、分析やアプリケーション開発に活かすうえで非常に重要です。Pythonは、その簡潔さと豊富なライブラリによって、データベースに接続しSQLクエリを実行するのが非常に簡単です。一方で、SQLはリレーショナルデータベースにおいてデータを効率よく操作・管理できる標準的な言語です。

本記事では、PythonとSQLを連携させる方法について、初心者でも理解しやすいように具体例を交えながら解説していきます。主に次の3つのアプローチを取り上げます。

  1. PythonでSQLiteデータベースを操作する
  2. PythonでMySQLに接続してクエリを実行する
  3. 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つのデータ(AliceBob)を挿入します。

データの取得

次に、挿入したデータを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は柔軟に対応します。