定型業務の自動化はpythonの得意とする所
今回、私がよくやる作業を自動化しようと思う
それが、複数のDBのテーブルからselectした内容をエクセルに貼って保存する作業。
正直だれでも出来る作業だし、時間もそんなかからないけど
自動化出来たら楽
●自動化の仕様
3つの以下のテーブルからselect
・table_a
・table_b
・table_c
このテーブルからselect分で取得した内容を順番にエクセルに貼り付けて、日付をつけて保存する
エクセルの名前は「test_20260305.xslx」のような感じ
DBはDB2です
●実装
import pandas as pd
import pyodbc
import datetime
ID = '1234567890'
connect = pyodbc.connect(
"DRIVER={IBM i Access ODBC Driver};"
"SYSTEM=127.0.0.1;"
"UID=USAERID;"
"PWD=USERPWD;"
)
# table_aからデータを取得
query = f"SELECT * FROM TABLE_A WHERE SERID= '{ID}'"
df_table_a = pd.read_sql(query, connect)
# table_bからデータを取得
query = f"SELECT * FROM TABLE_B WHERE SERID= '{ID}'"
df_table_b = pd.read_sql(query, connect)
# table_cからデータを取得
query = f"SELECT * FROM TABLE_C WHERE SERID= '{ID}'"
df_table_c = pd.read_sql(query, connect)
# エクセル生成
today = datetime.date.today()
filename = f"test_{today}.xlsx"
# エクセル書き込み
with pd.ExcelWriter(filename, engine='openpyxl') as writer:
df_table_a.to_excel(writer, sheet_name='Sheet1', index=False, startrow=0)
df_table_b.to_excel(writer, sheet_name='Sheet1', index=False, startrow=len(df_table_a)+2)
df_table_c.to_excel(writer, sheet_name='Sheet1', index=False, startrow=len(df_table_a)+len(df_table_b)+4)
これで簡単完成!!
あとは作業時にこのpythonを実行するだけ!
毎日の作業がこれで少し楽になる!

コメント