Python × SQLAlchemyで社内データをDB集計し、業務レポートを自動化

はじめに

日々の業務で「社内データベースにある数値をExcelにまとめてレポート化する」作業に追われていませんか?
毎回SQLを書いてCSVを出力し、Excelでグラフを作成…これでは手間も時間もかかります。

そこでおすすめなのが Python × SQLAlchemy を使ったデータ集計の自動化です。
この記事では、SQLAlchemyを使って社内DBからデータを取得し、Pandasで集計・加工して、業務レポートを自動生成する方法を解説します。


なぜSQLAlchemyを使うのか?

Pythonでデータベースを扱う場合、pymysqlpsycopg2 などの専用ライブラリを直接利用する方法もありますが、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を導入して、業務効率を一気に高めましょう!

タイトルとURLをコピーしました