Integración de Pandas y SQL
pd.read_sql(), df.to_sql(), motor de SQLAlchemy y consulta directa de resultados de bases de datos en DataFrames.
Integración de Pandas y SQL es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
pandas se encuentra con SQL
No tiene que elegir entre SQL y pandas: funcionan juntos. Consulte una base de datos para obtener un DataFrame, transfórmelo con pandas y vuelva a escribir los resultados.
El elemento de conexión es SQLAlchemy, junto con las funciones de pandas read_sql y to_sql.
¿Por qué SQLAlchemy?
pandas se comunica con las bases de datos mediante una conexión o un engine de SQLAlchemy. El engine abstrae el tipo de base de datos, por lo que el mismo código funciona con SQLite, PostgreSQL, MySQL y otras bases de datos; solo tiene que cambiar la URL.
Creación de un engine
create_engine recibe una URL de conexión. El esquema de la URL identifica el controlador de la base de datos.
from sqlalchemy import create_engine
engine = create_engine("sqlite:///ml.db")
# Postgres: create_engine("postgresql://user:pass@host:5432/db")Lectura de una tabla con pd.read_sql
pd.read_sql ejecuta una consulta, o lee una tabla, y devuelve un DataFrame. Proporcione una cadena SQL y el engine.
import pandas as pd
df = pd.read_sql("SELECT * FROM experiments", engine)
print(df.head())Lectura con una consulta filtrada
Deje que la base de datos realice el filtrado y la agregación, y después pase un resultado más pequeño a pandas. Es mucho más eficiente que cargarlo todo.
df = pd.read_sql(
"SELECT name, accuracy FROM experiments WHERE accuracy > 0.85 ORDER BY accuracy DESC",
engine,
)
print(df)Consultas parametrizadas
Pase los parámetros de la consulta de forma segura mediante el argumento params en lugar de formatear cadenas.
from sqlalchemy import text
df = pd.read_sql(
text("SELECT * FROM experiments WHERE name = :n"),
engine,
params={"n": "xgb"},
)Escritura de un DataFrame con df.to_sql
df.to_sql(table, engine) escribe un DataFrame en una tabla de base de datos y, si es necesario, la crea a partir de los tipos de datos del DataFrame.
df.to_sql("results", engine, index=False)El parámetro index
De forma predeterminada, to_sql escribe el índice del DataFrame como una columna. Normalmente no querrá hacerlo; pase index=False para omitirlo.
df.to_sql("results", engine, index=False) # no extra index columnEl parámetro if_exists
if_exists controla el comportamiento cuando la tabla ya existe:
"fail": genera un error (predeterminado)"replace": elimina y vuelve a crear la tabla"append": añade filas a la tabla existente
df.to_sql("results", engine, if_exists="append", index=False)
# Use "replace" to overwrite, "fail" to be safeUn flujo de trabajo de ida y vuelta
Una canalización habitual: leer datos sin procesar desde SQL, transformarlos en pandas y volver a escribir el resultado limpio en una tabla nueva.
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("sqlite:///ml.db")
raw = pd.read_sql("SELECT * FROM experiments", engine)
raw["accuracy_pct"] = (raw["accuracy"] * 100).round(1)
raw.to_sql("experiments_clean", engine, if_exists="replace", index=False)Lecturas por bloques para tablas grandes
Para las tablas demasiado grandes para caber en la memoria, pase chunksize a read_sql para iterar sobre el resultado por lotes.
for chunk in pd.read_sql("SELECT * FROM big_table", engine, chunksize=10000):
process(chunk) # handle 10k rows at a timeComprobación rápida: añadir filas
Quiere que to_sql añada filas nuevas a una tabla existente sin eliminarla.
Resumen: pandas y SQL
Ahora puede mover datos entre pandas y las bases de datos:
create_engine(url)para obtener una conexión independiente del tipo de base de datospd.read_sql(query, engine)para cargar los resultados de una consulta en un DataFramedf.to_sql(table, engine, index=False, if_exists=...)para volver a escribir los datos- consultas parametrizadas y
chunksizepara obtener seguridad y escalabilidad
A continuación: almacenar y consultar resultados de experimentos de ML.
Preguntas frecuentes
¿La lección «Integración de Pandas y SQL» es gratis?
Sí — el texto completo de «Integración de Pandas y SQL» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Integración de Pandas y SQL»?
pd.read_sql(), df.to_sql(), motor de SQLAlchemy y consulta directa de resultados de bases de datos en DataFrames. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Integración de Pandas y SQL»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- SQLite con el módulo sqlite3 de Python
- Integración de Pandas y SQL
- Almacenamiento y consulta de resultados de machine learning
- Introducción a las bases de datos vectoriales