PythonでSQLを使う方法|データベース操作の基本と実践例を初心者向けに解説

Pythonでデータ分析やWebアプリケーションを開発していると、「SQLも覚えたほうがいいの?」と疑問に思う人は多いでしょう。

結論からいうと、PythonとSQLは非常に相性がよく、データベースを扱うなら両方を学ぶのがおすすめです。

Pythonはデータ処理やアプリケーション開発を得意とし、SQLはデータベースから必要なデータを取得・追加・更新・削除することを得意としています。

この記事では、「PythonでSQLを使う方法」について、初心者にもわかりやすく解説します。

PythonとSQLの違い

まず、PythonとSQLは役割が異なります。

項目 Python SQL
種類 プログラミング言語 データベース操作言語
主な用途 アプリ開発・自動化・データ分析 データベース操作
得意なこと 複雑な処理・自動化 データの検索・集計
実行対象 Pythonプログラム データベース
代表的な環境 Django、Flask、Jupyter MySQL、PostgreSQL、SQLite

例えば、PythonでWebアプリを作り、そのアプリからデータベースに保存されたユーザー情報を取得する場合、PythonからSQLを実行するという使い方をします。

つまり、

  • Python=処理をする
  • SQL=データベースを操作する

と考えるとわかりやすいでしょう。

PythonでSQLを使うメリット

PythonからSQLを利用すると、さまざまな処理を自動化できます。

データベースから必要なデータを取得できる

例えば、データベースに大量の商品情報が保存されているとします。

SQLを使えば、次のようなデータを簡単に検索できます。

  • 価格が1万円以上の商品
  • 特定のカテゴリーの商品
  • 売上が多い商品
  • 特定の日付以降に購入された商品
SELECT * FROM products
WHERE price >= 10000;

PythonからこのSQLを実行することで、検索結果をPython側で処理できます。

大量のデータを効率的に処理できる

Pythonだけで大量のデータを処理することもできますが、データベースに保存されている大量のデータを検索・集計する場合は、SQLを使ったほうが効率的なケースがあります。

例えば、次のSQLを実行するとユーザー数をデータベース側で集計できます。

SELECT COUNT(*) FROM users;

データ分析にも活用できる

Pythonはデータ分析との相性が非常に良い言語です。

例えば、

SQLでデータを取得 → Pythonで分析

という流れがよく使われます。

データベース
    ↓
   SQL
    ↓
必要なデータを取得
    ↓
  Python
    ↓
データ分析・可視化

Pythonのpandasなどと組み合わせることで、データ分析の幅が広がります。

PythonからSQLを実行する基本的な方法

PythonからSQLを実行する方法はいくつかあります。

  • SQLite
  • MySQL
  • PostgreSQL
  • SQLAlchemy
  • pandas

初心者がSQLを試すなら、まずはSQLiteがおすすめです。

SQLiteはPythonに標準搭載されているsqlite3モジュールから利用できます。

PythonでSQLiteを使う

まず、SQLiteに接続してみましょう。

import sqlite3

conn = sqlite3.connect("sample.db")

print("データベースに接続しました")

sqlite3.connect()を使うことで、SQLiteのデータベースに接続できます。

sample.dbというファイルが存在しなければ、新しく作成されます。

PythonからSQLでテーブルを作成する

次に、SQLを使ってテーブルを作成します。

import sqlite3

conn = sqlite3.connect("sample.db")

cursor = conn.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
)
""")

conn.commit()

conn.close()

ここではusersというテーブルを作成しています。

テーブルには、次の3つのカラムがあります。

  • id
  • name
  • age

PythonからSQLでデータを登録する

SQLのINSERTを使えば、データを登録できます。

import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute(
    "INSERT INTO users (name, age) VALUES (?, ?)",
    ("太郎", 20)
)

conn.commit()
conn.close()

ポイントは、値を直接SQL文に埋め込まず、?を使って値を渡していることです。

このような方法は、SQLインジェクションなどのセキュリティリスクを避けるうえでも重要です。

PythonからSQLでデータを取得する

SQLのSELECTを使ってデータを取得できます。

import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute("SELECT * FROM users")

users = cursor.fetchall()

for user in users:
    print(user)

conn.close()

例えば、次のような結果になります。

(1, '太郎', 20)
(2, '花子', 22)

fetchall()を使うことで、検索結果をまとめて取得できます。

WHEREを使って条件を指定する

SQLではWHEREを使って条件を指定できます。

例えば、20歳以上のユーザーだけを取得する場合は、次のように書けます。

cursor.execute(
    "SELECT * FROM users WHERE age >= ?",
    (20,)
)

users = cursor.fetchall()

for user in users:
    print(user)

PythonからSQLを利用する場合も、通常のSQLと同じようにWHEREORDER BYGROUP BYなどを利用できます。

PythonでSQLのデータを更新する

SQLのUPDATEを使えば、データを更新できます。

cursor.execute(
    "UPDATE users SET age = ? WHERE name = ?",
    (21, "太郎")
)

conn.commit()

これによって、太郎さんの年齢を21歳に変更できます。

PythonでSQLのデータを削除する

データを削除するときはDELETEを使います。

cursor.execute(
    "DELETE FROM users WHERE name = ?",
    ("太郎",)
)

conn.commit()

これで、nameが「太郎」のデータを削除できます。

ただし、DELETEUPDATEを実行するときは、条件を間違えると大量のデータを変更・削除してしまう可能性があります。

本番環境では特に注意が必要です。

PythonとSQLを組み合わせた実践例

ここまでの内容をまとめて、簡単なプログラムを作ってみましょう。

import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
)
""")

cursor.execute(
    "INSERT INTO users (name, age) VALUES (?, ?)",
    ("太郎", 20)
)

conn.commit()

cursor.execute(
    "SELECT * FROM users WHERE age >= ?",
    (20,)
)

users = cursor.fetchall()

for user in users:
    print(user)

conn.close()

このプログラムでは、次の処理を行っています。

  1. データベースに接続
  2. テーブルを作成
  3. データを登録
  4. SQLでデータを検索
  5. Pythonで検索結果を表示
  6. データベースを切断

これがPythonでSQLを利用する基本的な流れです。

PythonでMySQLを使う方法

実際のWebサービスでは、SQLiteだけではなくMySQLやPostgreSQLなどのデータベースもよく利用されます。

MySQLをPythonから利用する場合は、専用のライブラリを利用します。

例えば、mysql-connector-pythonなどがあります。

pip install mysql-connector-python

インストール後、次のようにPythonからMySQLに接続できます。

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="sample"
)

cursor = conn.cursor()

cursor.execute("SELECT * FROM users")

for row in cursor.fetchall():
    print(row)

conn.close()

このように、PythonからMySQLに接続してSQLを実行できます。

PythonでPostgreSQLを使う

PostgreSQLもPythonとの相性が良いデータベースです。

PythonからPostgreSQLを利用する場合は、psycopgなどのライブラリが使われます。

例えば、次のコマンドでインストールできます。

pip install psycopg

基本的な考え方はSQLiteやMySQLと同じです。

Python
  ↓
データベース用ライブラリ
  ↓
PostgreSQL
  ↓
SQLを実行

PythonのpandasからSQLを利用する

データ分析では、PythonのpandasとSQLを組み合わせる方法もよく使われます。

例えば、次のようにSQLで取得したデータをDataFrameとして扱うことができます。

import pandas as pd
import sqlite3

conn = sqlite3.connect("sample.db")

df = pd.read_sql(
    "SELECT * FROM users",
    conn
)

print(df)

conn.close()

この方法なら、SQLで取得したデータをそのままDataFrameとして扱えます。

そのため、

SQLで必要なデータを抽出 → pandasで分析

という使い方ができます。

SQLAlchemyとは?

Pythonでデータベースを扱うときに、SQLAlchemyというライブラリもよく利用されます。

SQLAlchemyは、Pythonからさまざまなデータベースを扱うためのライブラリです。

例えば、次のようなデータベースに対応できます。

  • SQLite
  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server

また、SQLを直接書くだけでなく、ORM(Object Relational Mapping)を利用したデータベース操作も可能です。

PythonのWeb開発を本格的に行う場合には、SQLAlchemyを学んでおくと役立ちます。

PythonとSQLはどちらから勉強すべき?

「PythonとSQLのどちらから勉強すればいいの?」という疑問もあるでしょう。

基本的には、目的によって決めるのがおすすめです。

Python初心者の場合

まずPythonの基礎を学びましょう。

Python基礎
↓
変数
↓
if文
↓
for文
↓
関数
↓
リスト・辞書
↓
ファイル操作
↓
SQL

Pythonの基本的な文法を理解してからSQLを学ぶと、PythonからSQLを実行する仕組みを理解しやすくなります。

データ分析をしたい場合

PythonとSQLを並行して学ぶのもおすすめです。

SQL
↓
データ抽出
↓
Python
↓
pandas
↓
データ分析
↓
matplotlibなどで可視化

この組み合わせは、データ分析の仕事でも活用しやすいスキルです。

Webエンジニアを目指す場合

Pythonに加えてSQLを学ぶことをおすすめします。

特に、

  • Django
  • Flask
  • FastAPI

などのPythonフレームワークを使う場合、データベースに関する知識が必要になるケースが多くあります。

Pythonを学ぶならSQLも覚えるべき?

結論として、Pythonを仕事で使いたいならSQLも学んでおくと大きな武器になります。

特に、次のような職種を目指す場合、PythonとSQLを組み合わせる機会は多くあります。

  • Webエンジニア
  • データアナリスト
  • データサイエンティスト
  • AIエンジニア
  • 業務自動化エンジニア

PythonだけでなくSQLまで扱えるようになると、

「データを取得する → Pythonで処理する → 分析する → 結果を出力する」

という一連の処理を自分で構築できるようになります。

PythonでSQLを学ぶときのおすすめ学習順序

初心者なら、次の順番で学習すると効率的です。

STEP1:Pythonの基礎

まずは、次のようなPythonの基本文法を学びます。

  • 変数
  • データ型
  • if文
  • for文
  • while文
  • 関数
  • リスト
  • 辞書

STEP2:SQLの基本

次に、SQLの基本構文を学びます。

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • WHERE
  • ORDER BY
  • GROUP BY
  • JOIN

STEP3:SQLiteを使う

Python標準のsqlite3を使って、PythonからSQLを実行してみましょう。

STEP4:pandasとSQLを組み合わせる

SQLで取得したデータをpandasに読み込み、集計や分析を行います。

STEP5:MySQL・PostgreSQLを学ぶ

実際のWebアプリケーション開発などを行う場合は、MySQLやPostgreSQLにも挑戦します。

まとめ|PythonとSQLを組み合わせて実践的なスキルを身につけよう

PythonとSQLは競合するものではありません。

むしろ、PythonとSQLは組み合わせて使うことで大きな力を発揮します。

Pythonはプログラムの処理やデータ分析を担当し、SQLはデータベースの検索・登録・更新・削除を担当します。

まずはSQLiteを使って、

Python
↓
SQL
↓
データベース
↓
データ取得
↓
Pythonで処理

という流れを体験してみるとよいでしょう。

Pythonの基礎を身につけたら、SQLまで学習範囲を広げることで、Web開発・データ分析・AI開発・業務自動化など、Pythonを使った仕事に必要な実践力を高められます。

テックジムPython基礎コース(初心者向け)

対面・無料のプログラミング講座|東京で毎週開催|初心者向けPython講座

 

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら