La configuración de MySQL con Python es fundamental para proyectos ETL, ya que permite conectar y manipular datos desde una base de datos relacional. A continuación, se presenta un paso a paso para configurar MySQL y Python para tu proyecto ETL.
1. Instalación de MySQL
Si no tienes MySQL instalado, sigue estos pasos:
- Descarga MySQL desde MySQL Downloads.
- Instala MySQL Server y elige una contraseña para el usuario root durante la configuración.
- (Opcional) Instala MySQL Workbench para gestionar la base de datos gráficamente.
2. Configuración del Entorno en Python
Asegúrate de instalar las bibliotecas necesarias:
pip install mysql-connector-python pandas
mysql-connector-python: Controlador para conectarte a MySQL desde Python.
pandas: Necesario para manejar datos en Python.
3. Crear una Base de Datos en MySQL
Puedes usar MySQL Workbench o la línea de comandos:
CREATE DATABASE proyecto_etl;
USE proyecto_etl;
CREATE TABLE ventas (
id INT AUTO_INCREMENT PRIMARY KEY,
producto VARCHAR(50),
cantidad INT,
precio DECIMAL(10, 2),
fecha DATE
);
4. Conectar Python a MySQL
A continuación, se muestra cómo establecer una conexión básica:
import mysql.connector
# Conexión a la base de datos
conexion = mysql.connector.connect(
host="localhost",
user="root", # Cambia a tu usuario
password="tu_contraseña", # Cambia a tu contraseña
database="proyecto_etl"
)
if conexion.is_connected():
print("Conexión exitosa a la base de datos")
conexion.close()
5. Insertar Datos en la Base de Datos
Puedes insertar datos manualmente o desde un archivo como CSV.
a) Insertar Datos Manualmente
conexion = mysql.connector.connect(
host="localhost",
user="root",
password="tu_contraseña",
database="proyecto_etl"
)
cursor = conexion.cursor()
# Insertar datos
datos = ("Laptop", 5, 700.50, "2025-01-16")
query = "INSERT INTO ventas (producto, cantidad, precio, fecha) VALUES (%s, %s, %s, %s)"
cursor.execute(query, datos)
# Confirmar la transacción
conexion.commit()
print(f"Filas insertadas: {cursor.rowcount}")
cursor.close()
conexion.close()
b) Insertar Datos desde un Archivo CSV
import pandas as pd
# Leer el archivo CSV
df = pd.read_csv("ventas.csv")
# Conectar a la base de datos
conexion = mysql.connector.connect(
host="localhost",
user="root",
password="tu_contraseña",
database="proyecto_etl"
)
cursor = conexion.cursor()
# Insertar filas del DataFrame
for _, row in df.iterrows():
query = "INSERT INTO ventas (producto, cantidad, precio, fecha) VALUES (%s, %s, %s, %s)"
cursor.execute(query, tuple(row))
conexion.commit()
print(f"Filas insertadas: {cursor.rowcount}")
cursor.close()
conexion.close()
6. Leer Datos desde la Base de Datos
Esto es útil para extraer datos en la fase inicial del ETL.
conexion = mysql.connector.connect(
host="localhost",
user="root",
password="tu_contraseña",
database="proyecto_etl"
)
query = "SELECT * FROM ventas"
df = pd.read_sql(query, conexion)
print(df)
conexion.close()
7. Buenas Prácticas
- Archivos de Configuración: Guarda las credenciales de la base de datos en un archivo separado o usa variables de entorno para mayor seguridad.
- Control de Errores: Implementa bloques
try-except para manejar errores de conexión o consulta.
- Optimización: Usa técnicas de carga por lotes para insertar grandes volúmenes de datos.