はじめに
日々の業務で「社内データベースにある数値をExcelにまとめてレポート化する」作業に追われていませんか?
毎回SQLを書いてCSVを出力し、Excelでグラフを作成…これでは手間も時間もかかります。
そこでおすすめなのが Python × SQLAlchemy を使ったデータ集計の自動化です。
この記事では、SQLAlchemyを使って社内DBからデータを取得し、Pandasで集計・加工して、業務レポートを自動生成する方法を解説します。
なぜSQLAlchemyを使うのか?
Pythonでデータベースを扱う場合、pymysql
や psycopg2
などの専用ライブラリを直接利用する方法もありますが、SQLAlchemyを使うと以下のメリットがあります。
- 複数のDB(MySQL、PostgreSQL、SQLiteなど)に共通の書き方で対応できる
- ORM(オブジェクトリレーショナルマッピング)を使えば、SQLを直接書かなくても操作可能
- 必要に応じて生SQLも記述できる
- コードの可読性・保守性が高い
業務システムのデータベースが将来変わる可能性がある場合にも柔軟に対応できます。
事前準備
まずは必要なライブラリをインストールします。
pip install sqlalchemy pandas openpyxl
sqlalchemy
:データベース接続&操作用pandas
:データ分析&集計openpyxl
:Excelファイル出力用
データベースに接続する
ここでは例として、MySQLに接続するケースを紹介します。
from sqlalchemy import create_engine
import pandas as pd
# DB接続情報
user = "user_name"
password = "password"
host = "localhost"
port = "3306"
database = "company_db"
# 接続URL作成
engine = create_engine(f"mysql+pymysql://{user}:{password}@{host}:{port}/{database}")
# データ読み込み(SQL実行)
query = """
SELECT department, SUM(sales) as total_sales, COUNT(*) as orders
FROM orders
WHERE order_date BETWEEN '2025-08-01' AND '2025-08-30'
GROUP BY department
"""
df = pd.read_sql(query, engine)
print(df)
✅ これで、orders
テーブルから部署ごとの売上・注文数を集計できます。
レポートをExcelに自動出力
集計したデータをExcelに出力し、業務レポートとして保存します。
# Excelに出力
output_file = "monthly_report.xlsx"
df.to_excel(output_file, index=False)
print(f"レポートを {output_file} に出力しました。")
これで、毎月実行するだけで最新の売上レポートが自動生成されます。
定期実行で完全自動化
さらに便利にするために、定期実行(スケジューリング)を組み合わせましょう。
- Windows:タスクスケジューラ
- Linux / Mac:cron
- クラウド環境:Airflow / GitHub Actions / AWS Lambda
例:Windowsのタスクスケジューラで「毎月1日にこのスクリプトを実行」すれば、手作業ゼロでレポートが更新されます。
応用:可視化してさらに便利に
Pandasで加工したデータは、そのままグラフ化できます。
import matplotlib.pyplot as plt
# 部署ごとの売上グラフ
df.plot(kind="bar", x="department", y="total_sales", legend=False)
plt.title("部署別 売上集計")
plt.ylabel("売上額")
plt.tight_layout()
plt.savefig("monthly_sales.png")
これをExcelに添付したり、TeamsやSlackに自動送信すれば、レポートの共有まで自動化できます。
まとめ
- SQLAlchemyを使えば、DB操作をPythonで統一的に扱える
- Pandasと組み合わせることで集計・分析が容易に
- Excel出力やグラフ化で業務レポートを自動生成可能
- タスクスケジューラやcronで完全自動化できる
「SQLを毎回手作業で実行して、Excelにコピペして…」という作業はもう不要です。
Python × SQLAlchemyを導入して、業務効率を一気に高めましょう!