INDEX
SQLとデータベースからのデータ取得
機械学習やデータ分析では、学習用データをデータベースから取得することがよくあります。データベースを利用することで、大量のデータを効率よく管理し、必要なデータだけを取り出せるようになります。
この記事では、SQLの基本的な役割と、SQLite・MySQL・SQLAlchemyを利用したデータ取得方法について解説します。
SQLとデータベースからのデータ取得を図で理解する

SQLとは?
SQL(Structured Query Language)は、データベースに保存されたデータを検索・取得・追加・更新するための言語です。
機械学習では、データベースから必要なデータを抽出し、前処理や分析、モデル学習に利用します。
| 操作 | 例 |
|---|---|
| データ取得 | SELECT |
| データ追加 | INSERT |
| データ更新 | UPDATE |
| データ削除 | DELETE |
データベースからデータを取得する流れ
一般的な流れは次のようになります。
- データベースへ接続する
- SQL文を実行する
- 必要なデータを取得する
- 取得したデータを分析や機械学習に利用する
例えば、顧客データや売上データを取得し、予測モデルの学習に利用できます。
よく利用されるデータベース
| データベース | 特徴 |
|---|---|
| SQLite | 軽量でインストール不要。学習や小規模システム向け |
| MySQL | Webサービスで広く利用される |
| PostgreSQL | 高機能で大規模システムにも対応 |
SQLiteを使ったデータ取得
SQLiteはPython標準ライブラリから利用できる軽量データベースです。
SQLiteデータベースに接続しデータを取得
import sqlite3
# データベースに接続
conn = sqlite3.connect('example.db')
# カーソルを作成
cur = conn.cursor()
# SQLクエリを実行
cur.execute('SELECT * FROM users')
# 結果を取得
rows = cur.fetchall()
# 結果を表示
for row in rows:
print(row)
# 接続を閉じる
conn.close()
このコードでは、SQLiteデータベースへ接続し、usersテーブルからデータを取得しています。
MySQLを使ったデータ取得
MySQLは多くのWebシステムで利用される代表的なデータベースです。
MySQL用ライブラリのインストール
pip install pymysql
MySQLデータベースに接続しデータを取得
import pymysql
# MySQLに接続
conn = pymysql.connect(
host='localhost',
user='username',
password='password',
database='dbname'
)
# カーソルを作成
cur = conn.cursor()
# SQLクエリを実行
cur.execute('SELECT * FROM users')
# 結果を取得
rows = cur.fetchall()
# 結果を表示
for row in rows:
print(row)
# 接続を閉じる
conn.close()
SQLiteと基本的な流れは同じですが、サーバーへ接続してデータを取得します。
SQLAlchemyを使ったデータ取得
SQLAlchemyはPythonで広く利用されるデータベース操作ライブラリです。
SQLを直接記述するだけでなく、Pythonオブジェクトとしてデータベースを扱うこともできます。
SQLAlchemyのインストール
pip install sqlalchemy
SQLAlchemyを利用したデータ取得
from sqlalchemy import create_engine, MetaData, Table
# データベースに接続
engine = create_engine('sqlite:///example.db')
connection = engine.connect()
metadata = MetaData()
# テーブルを読み込み
users = Table('users', metadata, autoload_with=engine)
# クエリを実行
query = users.select()
result = connection.execute(query)
# 結果を表示
for row in result:
print(row)
SQLAlchemyを利用すると、複数のデータベースに対応しやすくなり、アプリケーション開発でも広く利用されています。
機械学習でデータベースが使われる理由
- 大量のデータを効率よく管理できる
- 必要なデータだけを抽出できる
- 最新データをリアルタイムで利用しやすい
- 複数のシステムから同じデータを利用できる
実務では、データベースから取得したデータをPandasへ読み込み、前処理や分析を行ってからモデル学習へ進むことが一般的です。
SQLとデータ取得の基本クエリ
| SQL文 | 用途 |
|---|---|
| SELECT * FROM users | 全データ取得 |
| SELECT name FROM users | 特定列のみ取得 |
| WHERE age > 20 | 条件を指定して取得 |
| ORDER BY age | 並び替え |
| LIMIT 100 | 取得件数の制限 |
データベース利用時のポイント
- 必要な列だけ取得すると処理が高速になる
- 大量データでは条件指定を活用する
- 機械学習用データはSQLで絞り込んで取得する
- 取得後はPandasなどで分析を行う