Retrosheet II: De CSV’s a MySQL

Una vez que descargamos los datos de Retrosheet con el shell script que vimos en la primera parte de esta serie, pasamos a crear una base de datos MySQL. Una vez que creamos la base de datos, creamos dos tablas, una para los eventos ocurridos dentro del juego y otra para los datos generales del juego. Para crear estas tablas utilizamos los scripts s_retrosheet_events.sql y s_retrosheet_games.sql respectivamente. Posteriormente corremos el siguiente script. Lo que hace es iterar a través de los archivos e insertarlos dentro de las dos tablas que se acaban de crear. Para ejecutarlo, instala las librerías que se muestran en las primeras tres lineas y posteriormente cambia las líneas 9, 31 y 32 para que se ajusten a tu entorno de trabajo.

import pandas as pd
import glob
from sqlalchemy import create_engine as ce, types
def insertToDatabase( p_df, p_tbl ):
# Idealmente, poner en un archivo .const.
# Se pone aqui para mas facilidad y hacer menos lineas.
con = "mysql://usuario:contrasenia@localhost/nombreDeBaseDeDatos?use_unicode=1&charset=utf8"
p_df.to_sql( name = p_tbl
, con = ce( con )
, if_exists = "append"
, index = False
)
def processCsvs( dir, p_tbl ):
# Recorrer todo el directorio en busca de CSV's.
# glob permite encontrar patrones en el nombre de archivos.
for csv in glob.glob(f"{dir}/*.csv"):
print(f"Processing {csv}")
df = pd.read_csv( filepath_or_buffer = csv, header = 0 )
insertToDatabase( p_df = df, p_tbl = p_tbl )
# Main
games_dir = # Directorio que contiene los csv's de partidos
events_dir = # Directorio que contiene los csv's de eventos.
processCsvs( dir = games_dir, p_tbl = "s_retrosheet_games" )
processCsvs( dir = events_dir, p_tbl = "s_retrosheet_events" )
view raw script.py hosted with ❤ by GitHub

Deja un comentario