PythonでMySQLのバッチ処理と自動化スクリプトを実装する方法

この記事では、Pythonを用いてMySQLでバッチ処理と自動化スクリプトを実装する方法について解説します。具体的なコード例とその詳細、応用例を含めています。

目次

前提条件

PythonとMySQLがインストールされていることが前提です。未インストールの場合は、公式サイトからダウンロードしてください。

必要なパッケージのインストール

MySQLの操作には`mysql-connector-python`というパッケージが便利です。

pip install mysql-connector-python

基本的なバッチ処理

まずは、基本的なバッチ処理の例から始めましょう。

import mysql.connector

# MySQLに接続
mydb = mysql.connector.connect(
  host="localhost",
  user="your_username",
  password="your_password",
  database="your_database"
)

# カーソルオブジェクトを作成
mycursor = mydb.cursor()

# SQLクエリを実行
mycursor.execute("SELECT * FROM your_table")

# 結果を取得
myresult = mycursor.fetchall()

# 結果を出力
for row in myresult:
  print(row)

コード解説

1. `mysql.connector`をインポートしています。
2. `connect`メソッドでMySQLに接続しています。
3. `cursor()`メソッドでカーソルオブジェクトを作成しています。
4. `execute`メソッドでSQLクエリを実行しています。
5. `fetchall`メソッドで全ての行を取得しています。

自動化スクリプトの作成

Pythonを用いて自動化スクリプトを作成する例です。

import mysql.connector
import datetime

def automated_task():
    mydb = mysql.connector.connect(
      host="localhost",
      user="your_username",
      password="your_password",
      database="your_database"
    )
    mycursor = mydb.cursor()
    today = datetime.date.today()
    mycursor.execute(f"INSERT INTO your_table (date_column) VALUES ('{today}')")
    mydb.commit()

automated_task()

コード解説

1. `datetime`モジュールをインポートして、現在の日付を取得しています。
2. `automated_task`関数内で、現在の日付を`your_table`の`date_column`に挿入しています。

応用例1: バッチ処理で大量データを効率よく処理

MySQLの`BULK INSERT`を利用したバッチ処理の例です。

import csv
import mysql.connector

def bulk_insert():
    mydb = mysql.connector.connect(
      host="localhost",
      user="your_username",
      password="your_password",
      database="your_database"
    )
    mycursor = mydb.cursor()
    with open('large_data.csv', 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            mycursor.execute(f"INSERT INTO your_table (column1, column2) VALUES ('{row[0]}', '{row[1]}')")
    mydb.commit()

bulk_insert()

コード解説

1. `csv`モジュールを用いて、CSVファイルを読み込んでいます。
2. 読み込んだ各行に対して、`INSERT INTO`文を実行しています。

応用例2: タイマーを使った定期的な自動化

Pythonの`time.sleep()`を用いて定期的なタスクを実行する例です。

import time

while True:
    automated_task()
    time.sleep(3600)  # 1時間ごとに実行

コード解説

1. `while True:`で無限ループを作成しています。
2. `time.sleep(3600)`で1時間待機しています。

まとめ

Pythonを用いてMySQLでのバッチ処理と自動化スクリプトを実装する方法について、基本的な手法から応用例まで詳細に解説しました。これを機に、PythonとMySQLを使って効率的なデータ処理を行ってみてはいかがでしょうか。

コメント

コメントする

目次