1. Introducción a MySQL Connector/Python
MySQL Connector/Python es la librería oficial que permite a los programas en Python conectarse a bases de datos MySQL y realizar operaciones. Facilita tareas básicas como la conexión, ejecución de consultas, recuperación y actualización de datos de manera sencilla y eficiente. La ventaja de MySQL Connector/Python es su integración directa con MySQL y su compatibilidad con el estándar DB-API 2.0 de Python. Esto proporciona una interfaz consistente para acceder a distintos sistemas de bases de datos, lo que permite a los desarrolladores de Python trabajar de forma uniforme con diferentes motores.
¿Por qué usar MySQL Connector/Python?
Con MySQL Connector/Python se pueden realizar operaciones seguras que previenen la inyección SQL. Además, aprovecha los beneficios de la programación orientada a objetos de Python para implementar interacciones con bases de datos de manera más eficiente y flexible. También incluye funciones avanzadas como sentencias preparadas y manejo de escape, lo que lo convierte en una opción destacada tanto en seguridad como en rendimiento.
2. Configuración de MySQL Connector/Python
Para empezar a usar MySQL Connector/Python es necesario preparar el entorno. A continuación, se explican los pasos de instalación y configuración.
Método de instalación
MySQL Connector/Python puede instalarse fácilmente con pip
, el gestor de paquetes de Python. Ejecuta el siguiente comando:
pip install mysql-connector-python
Este comando instalará la versión más reciente de MySQL Connector/Python.
Configuración del entorno de desarrollo
Para trabajar de manera eficiente, se recomienda usar un entorno de desarrollo integrado (IDE) como PyCharm o VS Code. Estos ofrecen funciones como autocompletado y depuración. Configura el intérprete de Python en el IDE y asegúrate de que pueda utilizar el paquete MySQL Connector/Python instalado.
3. Conexión a MySQL
Veamos cómo conectar Python a una base de datos MySQL con MySQL Connector/Python. Primero, es necesario entender los parámetros básicos de conexión.
Parámetros de conexión
Para conectarse a una base de datos MySQL, se necesitan los siguientes datos:
host
: nombre de host o dirección IP del servidoruser
: nombre de usuario de la base de datospassword
: contraseña del usuariodatabase
: nombre de la base de datos
Estos valores se pasan a la función connect
de MySQL Connector/Python para establecer la conexión.
Código de ejemplo
Ejemplo básico para conectarse a una base de datos MySQL:
import mysql.connector
# Conexión a la base de datos
conn = mysql.connector.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database'
)
# Verificar conexión
if conn.is_connected():
print('Conexión establecida con MySQL.')
# Cerrar conexión
conn.close()
Este código establece una conexión con los parámetros especificados y confirma con is_connected()
si fue exitosa. Es importante cerrar la conexión con close()
cuando ya no se necesite.

4. Operaciones básicas con la base de datos
Una vez establecida la conexión, se pueden realizar operaciones fundamentales como crear tablas, insertar, consultar, actualizar y eliminar datos.
4.1 Creación de tablas
Ejemplo para crear una tabla users
:
# Obtener cursor
cursor = conn.cursor()
# Crear tabla
create_table_query = '''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
)
'''
cursor.execute(create_table_query)
Se crea la tabla users
con un campo id
auto incremental como clave primaria.
4.2 Inserción de datos
Ejemplo de inserción:
insert_data_query = '''
INSERT INTO users (username, email) VALUES (%s, %s)
'''
user_data = ("Tanaka", "tanaka@example.com")
cursor.execute(insert_data_query, user_data)
conn.commit()
Se inserta un usuario en la tabla. El marcador %s
se sustituye por los valores proporcionados.
4.3 Consulta de datos
select_query = "SELECT * FROM users WHERE username = %s"
cursor.execute(select_query, ("Tanaka",))
result = cursor.fetchone()
print(result)
Se obtiene un registro cuyo username
sea Tanaka
.
4.4 Actualización de datos
update_query = "UPDATE users SET email = %s WHERE username = %s"
cursor.execute(update_query, ("tanaka.new@example.com", "Tanaka"))
conn.commit()
Se actualiza el correo del usuario Tanaka.
4.5 Eliminación de datos
delete_query = "DELETE FROM users WHERE username = %s"
cursor.execute(delete_query, ("Tanaka",))
conn.commit()
Se elimina el usuario Tanaka de la tabla.
5. Placeholders y sentencias preparadas
El uso de placeholders y sentencias preparadas mejora la seguridad y rendimiento. Permiten prevenir inyecciones SQL y optimizar consultas repetitivas.
5.1 Uso de placeholders
select_query = "SELECT * FROM users WHERE username = %s"
cursor.execute(select_query, ("Tanaka",))
result = cursor.fetchone()
print(result)
El valor se escapa automáticamente, reduciendo riesgos de inyección.
5.2 Uso de sentencias preparadas
cursor = conn.cursor(prepared=True)
stmt = "SELECT * FROM users WHERE username = ?"
cursor.execute(stmt, ("Tanaka",))
result = cursor.fetchone()
print(result)
Ventajas
- Seguridad: Protege contra inyección SQL.
- Rendimiento: La consulta se analiza solo una vez y puede ejecutarse varias veces rápidamente.

6. Escape y ejecución directa desde la conexión
Cuando se generan consultas dinámicas o se incluyen caracteres especiales, es necesario realizar un escape seguro.
6.1 Escape de cadenas
escaped_string = conn.converter.escape("O'Reilly")
print(escaped_string) # Salida: O'Reilly
6.2 Ejecución directa con la conexión
stmt = "SELECT * FROM users WHERE username = '%s'"
conn.cmd_query(stmt % conn.converter.escape("Tanaka"))
Este método requiere cuidado, pues no soporta placeholders. Se recomienda usar cursores y placeholders en la mayoría de casos.
7. Manejo de errores y buenas prácticas
7.1 Implementación de manejo de errores
import mysql.connector
from mysql.connector import Error
try:
conn = mysql.connector.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database'
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
for row in results:
print(row)
except Error as e:
print(f"Ocurrió un error: {e}")
finally:
if conn.is_connected():
cursor.close()
conn.close()
print("Conexión MySQL cerrada.")
7.2 Mejores prácticas
- Gestión de conexiones: cerrar siempre las conexiones cuando no se usen.
- Uso de placeholders: evita inyecciones SQL.
- Excepciones: manejar errores con bloques
try-except
. - Transacciones: usar commits o rollbacks para garantizar la integridad de los datos.
8. Conclusión
MySQL Connector/Python es una herramienta poderosa para conectar Python con bases de datos MySQL. Hemos visto desde la instalación, operaciones básicas, hasta el uso de sentencias preparadas, escapes y manejo de errores. Dominar estas técnicas permite desarrollar aplicaciones más seguras y eficientes. Para avanzar, explora ejemplos prácticos más avanzados y consulta la documentación oficial para aprovechar al máximo todas sus funciones.