Conexión a MySQL desde Python con `mysql.connector`: Guía completa


Conectar Python a una base de datos MySQL es una habilidad esencial para cualquier desarrollador que trabaje con datos. El módulo `mysql.connector` de Python es una herramienta poderosa y fácil de usar que te permite interactuar con bases de datos MySQL desde tus scripts de Python.


En este artículo, te explicaré qué es `mysql.connector`, cómo instalarlo, cómo realizar las operaciones CRUD (crear, leer, actualizar y eliminar) y qué buenas prácticas seguir al trabajar con bases de datos.



¿Qué es `mysql.connector`?

`mysql.connector` es un módulo oficial proporcionado por Oracle que permite conectar Python con bases de datos MySQL. Te permite realizar operaciones comunes en bases de datos como insertar, leer, actualizar o eliminar registros, así como ejecutar consultas más complejas como JOINs o agregaciones.


Al usar `mysql.connector`, puedes aprovechar todo el poder de MySQL dentro de tus aplicaciones Python, permitiendo gestionar datos de manera eficiente.



Instalación de `mysql.connector`

Antes de comenzar a usar `mysql.connector`, necesitas instalar el paquete en tu entorno Python. Esto lo puedes hacer fácilmente con `pip`:


pip install mysql-connector-python


Este comando instala la versión más reciente del módulo `mysql-connector-python`, asegurando que estás listo para comenzar a trabajar con bases de datos MySQL.



Conectando a una base de datos MySQL

El primer paso para interactuar con una base de datos es establecer una conexión entre Python y el servidor MySQL. Para hacerlo, necesitas proporcionar la información necesaria para la conexión, como el nombre del servidor, el usuario, la contraseña y el nombre de la base de datos.



Ejemplo básico de conexión:


import mysql.connector


# Establecer la conexión con MySQL

conexion = mysql.connector.connect(

  host="localhost",   # Servidor

  user="tu_usuario",   # Usuario de MySQL

  password="tu_contraseña", # Contraseña

  database="mi_base_de_datos" # Nombre de la base de datos

)


# Verificar si la conexión fue exitosa

if conexion.is_connected():

  print("Conexión exitosa a la base de datos")

else:

  print("Error al conectar a la base de datos")


# Cerrar la conexión

conexion.close()



Explicación del código:

- `mysql.connector.connect()`: Esta función establece la conexión con el servidor MySQL utilizando los parámetros que le proporcionas.

- `host`: Especifica la dirección del servidor MySQL. Si MySQL está en tu máquina local, puedes usar `localhost`.

- `user` y `password`: Son las credenciales para acceder al servidor MySQL.

- `database`: Nombre de la base de datos con la que deseas trabajar.

- `conexion.close()`: Siempre es una buena práctica cerrar la conexión una vez que has terminado de interactuar con la base de datos.



Operaciones CRUD con `mysql.connector`

Una vez establecida la conexión, puedes empezar a realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en tu base de datos MySQL.


1. Crear (INSERT)

Para insertar datos en una tabla, puedes usar la consulta `INSERT INTO`. Supongamos que tenemos una tabla llamada `usuarios` con las columnas `nombre` y `email`.


Ejemplo de inserción de datos:


import mysql.connector


# Conectar a la base de datos

conexion = mysql.connector.connect(

  host="localhost",

  user="tu_usuario",

  password="tu_contraseña",

  database="mi_base_de_datos"

)


cursor = conexion.cursor()


# Consulta SQL para insertar datos

sql = "INSERT INTO usuarios (nombre, email) VALUES (%s, %s)"

valores = ("Juan Pérez", "juanperez@gmail.com")


# Ejecutar la consulta

cursor.execute(sql, valores)


# Confirmar los cambios

conexion.commit()


print(f"{cursor.rowcount} registro insertado.")


# Cerrar la conexión

cursor.close()

conexion.close()



Explicación:

- `cursor.execute()`: Ejecuta la consulta SQL. Utilizamos `%s` como un marcador de posición para los valores que se pasarán como una tupla.

- `conexion.commit()`: Guarda los cambios realizados en la base de datos, lo que significa que el nuevo registro se inserta permanentemente.



2. Leer (SELECT)

Para leer datos de la base de datos, utilizamos la consulta `SELECT`. A continuación te muestro cómo recuperar todos los registros de la tabla `usuarios`.


Ejemplo de lectura de datos:


import mysql.connector


# Conectar a la base de datos

conexion = mysql.connector.connect(

  host="localhost",

  user="tu_usuario",

  password="tu_contraseña",

  database="mi_base_de_datos"

)


cursor = conexion.cursor()


# Consulta SQL para seleccionar datos

cursor.execute("SELECT * FROM usuarios")


# Obtener todos los resultados

resultados = cursor.fetchall()


# Imprimir los resultados

for fila in resultados:

  print(fila)


# Cerrar la conexión

cursor.close()

conexion.close()



Explicación:

- `cursor.execute("SELECT * FROM usuarios")`: Ejecuta la consulta para seleccionar todos los registros de la tabla `usuarios`.

- `cursor.fetchall()`: Obtiene todos los registros de la tabla y los guarda en la variable `resultados`.

- `for fila in resultados`: Itera sobre los resultados para imprimir cada registro.



3. Actualizar (UPDATE)

Para actualizar un registro existente, usamos la consulta `UPDATE`. Supongamos que queremos cambiar el correo electrónico de un usuario específico.



Ejemplo de actualización de datos:


import mysql.connector


# Conectar a la base de datos

conexion = mysql.connector.connect(

  host="localhost",

  user="tu_usuario",

  password="tu_contraseña",

  database="mi_base_de_datos"

)


cursor = conexion.cursor()


# Consulta SQL para actualizar un registro

sql = "UPDATE usuarios SET email = %s WHERE nombre = %s"

valores = ("nuevoemail@gmail.com", "Juan Pérez")


# Ejecutar la consulta

cursor.execute(sql, valores)


# Confirmar los cambios

conexion.commit()


print(f"{cursor.rowcount} registro(s) actualizado(s).")


# Cerrar la conexión

cursor.close()

conexion.close()



Explicación:

- `UPDATE usuarios SET`: Actualiza la columna `email` de un usuario en particular.

- `WHERE nombre = %s`: Asegura que solo se actualice el registro que cumple con la condición especificada.



4. Eliminar (DELETE)

Para eliminar un registro, usamos la consulta `DELETE`. Por ejemplo, si queremos eliminar un usuario de la tabla:



Ejemplo de eliminación de datos:


import mysql.connector


# Conectar a la base de datos

conexion = mysql.connector.connect(

  host="localhost",

  user="tu_usuario",

  password="tu_contraseña",

  database="mi_base_de_datos"

)


cursor = conexion.cursor()


# Consulta SQL para eliminar un registro

sql = "DELETE FROM usuarios WHERE nombre = %s"

valores = ("Juan Pérez",)


# Ejecutar la consulta

cursor.execute(sql, valores)


# Confirmar los cambios

conexion.commit()


print(f"{cursor.rowcount} registro(s) eliminado(s).")


# Cerrar la conexión

cursor.close()

conexion.close()



Explicación:

- `DELETE FROM usuarios WHERE nombre = %s`: Elimina el registro que coincide con el nombre proporcionado.



Manejo de excepciones

Es importante manejar posibles errores al trabajar con bases de datos, como problemas de conexión o consultas mal formateadas. Puedes hacerlo utilizando bloques try-except para capturar excepciones y manejar errores de manera adecuada.


Ejemplo de manejo de excepciones:


import mysql.connector

from mysql.connector import Error


try:

  # Intentar conectar a la base de datos

  conexion = mysql.connector.connect(

    host="localhost",

    user="tu_usuario",

    password="tu_contraseña",

    database="mi_base_de_datos"

  )


  if conexion.is_connected():

    print("Conexión exitosa a la base de datos")


except Error as e:

  print(f"Error al conectar a la base de datos: {e}")


finally:

  if conexion.is_connected():

    conexion.close()

    print("Conexión cerrada")



Buenas prácticas al usar `mysql.connector`

1. Cerrar la conexión: Siempre asegúrate de cerrar la conexión a la base de datos una vez que hayas terminado de interactuar con ella para liberar recursos.

  

2. Usar `commit()` para confirmaciones: Recuerda llamar a `conexion.commit()` después de cada operación que modifique la base de datos (INSERT, UPDATE, DELETE), ya que los cambios no se guardan automáticamente.


3. Manejo de errores: Implementa manejo de excepciones para evitar que tu aplicación se detenga inesperadamente si hay algún problema con la base de datos.


4. Evitar SQL Injection: Utiliza siempre marcadores de posición (`%s`) en las consultas para evitar ataques de inyección SQL.



Hay mucho más contenido sobre Python para ti

Puedes conocer todo el contenido que comparto en mi perfil de LinkedIn

 

Puedes descargar GRATIS mi manual completo en pdf de Python Rápido


image

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.