レースDBに1着馬の列を加えることにしました。
まずレースDBと1着馬DBとをraceIDをキーとして内部結合します。結合データをpandasでデータフレームにしてCSV化します。
1着同着のレースは2行になるので何らかの処理が必要です。
重複列、同着レースの処理を済ませたら、MySQLにDB登録します。
import mysql.connector,glob
import pandas as pd
<接続設定は省略>
# 対象ファイルパスのリストを作成
file_l = [path for path in glob.glob('/horse_racing/race_name/*/*.csv')]
# ファイルパスから拡張子なしのファイル名を抽出
table_l = [path[-17:-4] for path in file_l]
# mysqlに接続
con = mysql.connector.connect(**config)
# データベースhorse_race_nameとhorse_race_winnerを結合してCSV出力する
for table in table_l:
year = table[-6:-2]
sql = f'SELECT * FROM horse_race_name.{table} INNER JOIN \
horse_race_winner.{year}_1着馬リスト ON horse_race_name.{table}.raceID \
= horse_race_winner.{year}_1着馬リスト.raceID'
data = pd.read_sql_query( sql = sql , con = con )
# 結合ファイル名の作成
filename = f'{table}.csv'
with open(filename, 'w', newline='',encoding = 'shift_jis') as f:
data.to_csv(f,index=False)
con.close()