Mostramos un ejemplo de código fuente en lenguaje de programación Python que accede a servidor de base de datos MySQL y MariaDB y realiza diversas acciones: select, insert, updater y delete.

Requisitos para acceso a MySQL con Python

Necesitaremos disponer de Python instalado en el equipo y un IDE de desarrollo (puede usarse un editor de texto plano, pero un IDE nos ayudará a programar sin errores y a compilar los programas). En el siguiente artículo explicamos cómo instalar Python y el IDE Visual Studio Code:

En el caso de SQLite, Python ya incluye su propio paquete para trabajar con esta base de datos, como hemos explicado en el siguiente artículo:

En cambio, para MySQL, es preciso descargar o instalar el paquete Python para acceso a MySQL. Para instalarlo en Python automáticamente, si tenemos un equipo Windows, abriremos una ventana de MS-DOS (cmd, Símbolo de sistema):

Y escribiremos, en primer lugar, para verificar que la carpeta de instalación de Python está en la variable de entorno PATH:

pip –version

Si nos devuelve algo así:

pip 20.2.3 from c:\program files\lib\site-packages\pip (python 3.9)

Significará que podemos ejecutar el comando desde cualquier ubicación del equipo. En caso de que nos devuelva que el comando «pip» no existe, deberemos acceder a la carpeta donde se encuentra este comando con «cd», por ejemplo:

cd C:\Program Files\Scripts

Ejecutaremos a continuación el comando que descargará el paquete para trabajar con bases de datos MySQL desde nuestros programas Python, que será el siguiente:

pip install mysql-connector-python

Si todo es correcto nos devolverá algo así:

Defaulting to user installation because normal site-packages is not writeable
Collecting mysql-connector-python
Downloading mysql_connector_python-8.0.22-py2.py3-none-any.whl (374 kB)
Collecting protobuf>=3.0.0
Downloading protobuf-3.14.0-py2.py3-none-any.whl (173 kB)
Requirement already satisfied: six>=1.9 in c:\users\alonso\appdata\roaming\python\python39\site-packages (from protobuf>=3.0.0->mysql-connector-python) (1.15.0)
Installing collected packages: protobuf, mysql-connector-python
Successfully installed mysql-connector-python-8.0.22 protobuf-3.14.0
WARNING: You are using pip version 20.2.3; however, version 20.3.3 is available.
You should consider upgrading via the ‘c:\program files\python.exe -m pip install –upgrade pip’ command.

En nuestro caso nos indica que hay una versión de pip más reciente y que podemos actualizarla con el comando:

python.exe -m pip install –upgrade pip

No es necesario para el caso que nos ocupa, pero si queremos tener esta herramienta actualizada podemos ejecutar el comando anterior.

Ya tenemos disponible el paquete para trabajar con base de datos MySQL desde Python, para usarlo añadiremos el import:

import mysql.connector

A continuación mostramos un ejemplo completo que usa este paquete y realiza varias acciones contra un servidor MySQL Server.

Todo lo que explicaremos a continuación para MySQL es perfectamente válido para MariaDB.

Ejemplo de ejecución de consulta SQL select en Python contra servidor MySQL

A continuación mostramos un sencillo ejemplo que ejecuta una consulta SQL «sencilla», un select en un servidor de MySQL Server. Muestra el resultado de los registros obtenidos por pantalla. El código completo en Python:

En el ejemplo anterior conectamos con un servidor MySQL ubicado en el mismo equipo que donde ejecutamos el programa, de ahí que host tenga el valor «localhost». Si el servidor es externo, no hay problema, cambiaremos «localhost» por su nombre o dirección y cambiaremos, como es lógico «user», «passwd» y «db» por el usuario, contraseña y nombre de la base de datos a la que queramos conectar.

En el ejemplo hemos obtenido los registros (limitando a 1000) de la tabla «articulos» que previamente existirá en nuestra base de datos «lista_compra» del servidor MySQL.

Si compilamos la aplicación y tanto el servidor MySQL como la base de datos y la tabla están correctos, mostrará por pantalla sus registros:

Ejemplo de ejecución de consulta SQL select en Python contra servidor MySQL

De esta sencilla forma, podremos acceder desde nuestros programas Python a un servidor MySQL y realizar cualquier acción que necesitemos: select, insert, delete, update, …, como veremos a continuación.

Select con filtro (parámetro) en tabla MySQL con Python

Python también permite pasar parámetros a una consulta SQL para realizar, por ejemplo, un filtro. Modificando el ejemplo anterior, seleccionaremos solo los registros cuyo campo «cantidad» de la tabla «articulos» sea mayor de un número que se solicite al usuario por consola:

Select con filtro (parámetro) en tabla MySQL con Python

Inserción de registro en tabla MySQL con Python

A continuación mostramos un ejemplo de inserción de registros en una tabla MySQL usando Python como lenguaje de programación:

Inserción de registro en tabla MySQL con Python

Modificar registro existente en tabla MySQL desde Python

A continuación mostramos un código fuente Python de ejemplo que solicita al usuario un código de artículo, un nombre y una cantidad de stock y actualiza el artículo existente en la tabla (filtrando por el código) con los nuevos datos:

Modificar registro existente en tabla MySQL desde Python

Eliminar registros en tabla MySQL desde Python

A continuación mostramos un ejemplo de eliminación de registros en tabla MySQL usando Python como lenguaje de programación:

Descarga del código fuente de los ejemplos Python

A continuación os mostramos enlace para la descarga de todos los ejemplos usados en este artículo:

Anexo

Error ModuleNotFoundError: No module named ‘mysql.connector’; ‘mysql’ is not a package

Si nombramos el fichero .py de nuestro código como mysql.py, hemos observado que el compilador muestra este error:

import mysql.connector
ModuleNotFoundError: No module named ‘mysql.connector’; ‘mysql’ is not a package

Error ModuleNotFoundError: No module named 'mysql.connector'; 'mysql' is not a package

Para evitar este error, sencillamente, cambiaremos el nombre del fichero mysql.py por otro cualquiera, por ejemplo acceso_mysql.py.