Introducción
MySQL es una de las bases de datos relacionales más populares, ampliamente utilizada en desarrollo web y soluciones empresariales. Para trabajar con MySQL en Python, se usa a menudo el driver PyMySQL, una implementación pura en Python del protocolo MySQL. Es fácil de usar, cuenta con soporte activo y es compatible con bibliotecas populares como SQLAlchemy y Pandas.
PyMySQL es un driver para MySQL que permite conectarse a la base de datos, ejecutar consultas SQL, gestionar transacciones e integrarse con frameworks web sin configuración compleja. A diferencia de otros drivers, PyMySQL está escrito completamente en Python, lo que lo hace multiplataforma y sencillo de instalar.
¿Qué es PyMySQL?
PyMySQL es una biblioteca cliente para Python que implementa el protocolo Cliente/Servidor de MySQL. Proporciona una interfaz para conectarse a un servidor MySQL y ejecutar consultas SQL. La biblioteca sigue la especificación Python Database API 2.0 (PEP 249), lo que garantiza compatibilidad con otras aplicaciones Python.
Características principales de PyMySQL
- Python puro: No requiere dependencias externas en C/C++
- Compatibilidad: Soporta MySQL versiones 5.5 y superiores
- Seguridad: Protección integrada contra inyecciones SQL
- Rendimiento: Optimizado para ejecución rápida de consultas
- Facilidad de uso: API intuitiva y clara
Instalación y conexión a MySQL
Instalación
pip install pymysql
Para funcionalidad adicional, también se recomienda instalar:
pip install pymysql[rsa] # para soporte de autenticación RSA
Conexión a la base de datos
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test_db',
port=3306,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
DictCursor permite obtener resultados como diccionarios en lugar de tuplas, lo que facilita el manejo de datos.
Parámetros de conexión
| Parámetro | Descripción | Tipo | Valor por defecto |
|---|---|---|---|
host |
Host del servidor MySQL | str | 'localhost' |
port |
Puerto del servidor | int | 3306 |
user |
Nombre de usuario | str | None |
password |
Contraseña | str | None |
database |
Nombre de la base de datos | str | None |
charset |
Codificación | str | 'utf8mb4' |
autocommit |
Auto-commit | bool | False |
cursorclass |
Clase del cursor | class | Cursor |
Creación de base de datos y tablas
# Creación de base de datos
with connection.cursor() as cursor:
cursor.execute("CREATE DATABASE IF NOT EXISTS test_db")
# Creación de tabla
with connection.cursor() as cursor:
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
connection.commit()
Operaciones CRUD con PyMySQL
Inserción de datos
# Inserción de un registro
with connection