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つのカラムがあります。
idnameage
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と同じようにWHEREやORDER BY、GROUP 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が「太郎」のデータを削除できます。
ただし、DELETEやUPDATEを実行するときは、条件を間違えると大量のデータを変更・削除してしまう可能性があります。
本番環境では特に注意が必要です。
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()
このプログラムでは、次の処理を行っています。
- データベースに接続
- テーブルを作成
- データを登録
- SQLでデータを検索
- Pythonで検索結果を表示
- データベースを切断
これが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を使った仕事に必要な実践力を高められます。







