Synology DS1621+のMariaDB10(Mysql)へExcelデータからPythonでデータ追加する。

さ、段々とスキルが上がって来ましたが、今回は既にPythonでスクレイピングしてダウンロードしたExcelファイルを、SynologyのMariaDB10(MySQL)へデータ追加したいと思います。

データはJ1リーグのチーム別集計結果です。

これをデータベースへ入力します。

実行方法はsynologyのタスクスケジューラーで即時実行する方法で行います。


export PATH="$PATH:/volume1/@appstore/py3k/usr/local/bin"
cd ./Document/TOTO/TOTO_2021/01_Python
python3 XXX.py

こんな感じでタスクスケジューラーに入力して、コードは下にある通りです。


# coding: utf-8
import xlrd
import sys
import pymysql.cursors

# ワークブックを開き、ワークシートを定義します。
book = xlrd.open_workbook("Excel-File.xlsx")
sheet = book.sheet_by_name("Sheet1")

# Mysqlへ接続
database = pymysql.connect(user='ユーザー名',passwd='パスワード',host='ホスト名',port = 3307,db='DB名',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)

# データベースを1行ずつ走査するために使用されるカーソルを取得します。
cursor = database.cursor()

# INSERT INTO SQLクエリを作成する
query = "INSERT INTO J1_team_results (team, game, Match_time, score, Average_score, PK_score, PK, Conceded, Average_goal, PK_goal, un_PK, shoot, un_shoot, FK, CK, Foul, warning, game_Exit) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"

# XLSXファイルの各行を反復するForループを作成し、2行目からヘッダーをスキップします
for r in range(1, sheet.nrows-1):
    team = sheet.cell(r,1).value 
    game = sheet.cell(r,2).value
    Match_time = sheet.cell(r,3).value
    score = sheet.cell(r,4).value 
    Average_score = sheet.cell(r,5).value
    PK_score = sheet.cell(r,6).value
    PK = sheet.cell(r,7).value 
    Conceded = sheet.cell(r,8).value
    Average_goal = sheet.cell(r,9).value
    PK_goal = sheet.cell(r,10).value 
    un_PK = sheet.cell(r,11).value
    shoot = sheet.cell(r,12).value
    un_shoot = sheet.cell(r,13).value
    FK = sheet.cell(r,14).value
    CK = sheet.cell(r,15).value
    Foul = sheet.cell(r,16).value
    warning = sheet.cell(r,17).value
    game_Exit = sheet.cell(r,18).value

    # 各行から値を割り当てる
    values = (team, game, Match_time, score, Average_score, PK_score, PK, Conceded, Average_goal, PK_goal, un_PK, shoot, un_shoot, FK, CK, Foul, warning, game_Exit)

    # SQLクエリを実行する
    cursor.execute(query, values)

# カーソルを閉じる
cursor.close()

# トランザクションをコミットします
database.commit()

# データベース接続を閉じます
database.close()

で、データベースにデータが入った所は以下になります。

phpMyAdminで確認して見ましょう。

出来ましたね。ん~。自分でも思ったよりも、出来るようになって来ました。

データベースにデータを自動的に入れることが出来るようになってきたので、ほぼ山場は過ぎて、あとはクエリを動かすくらいですね。

淡々と作って行きましょう。

しかし、参考にさせて頂いた皆さんには感謝しかないですね。有難いことです。