Dungeon of Bits
Aprendiendo informática.
Dungeon of Bits

Uso de MariaDB desde Python

En este tutorial conectaremos una base de datos MariaDB con una aplicación en Python.

MariaDB con Python

Requisitos:

Usaremos un equipo con Linux (Ubuntu 22.04 LTS) y Pycharm Community para el desarrollo de la aplicación en Python.

Si no tenemos instalado Pycharm.

sudo snap install pycharm-community --classic

Instalar MariaDB:

Actualizamos repositorios e instalamos la bbdd y librerías necesarias.

sudo apt update
sudo apt install mariadb-server
sudo apt-get install libmariadb3 libmariadb-dev

Crear la base de datos y usuario en MariaDB:

Ahora crearemos una base de datos y un usuario para poder conectarnos a la base de datos, para entrar dentro de mariadb simplemente escribimos el comando:

mariadb

Una vez dentro creamos la base de datos, el usuario y actualizamos privilegios:

CREATE DATABASE proves;
CREATE USER 'pythonMaster'@'localhost' IDENTIFIED BY 'Admin1234';
GRANT ALL ON proves.* TO 'pythonMaster'@'localhost' IDENTIFIED BY 'Admin1234' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Instalar el conector de Python con MariaDB:

Creamos un nuevo proyecto en Pycharm:

MariaDB con Python

Instalar pip:

Si no disponemos de pip lo intalamos con el comando:

sudo apt install python3-pip

Activar entorno virtual:

Desde terminal escribimos el comando siguiente.

. venv/local/bin/activate

Teniendo en cuenta la estructura que tengamos de proyecto, activate suele estar siempre dentro del directorio bin.

MariaDB con Python

Instalar conector MariaDB:

pip3 install mariadb

Crear una tabla desde Python:

En el siguiente ejemplo vamos a crear una tabla desde Python.

Tendremos los datos de conexión en el mismo ejemplo, es mejor guardarlos en un fichero aparte.

import mariadb
import sys

#Datos de conexión
try:
    conn = mariadb.connect(
        user="pythonMaster",
        password="Admin1234",
        host="localhost",
        port=3306,
        database="proves"
    )
except mariadb.Error as e:
    print(f"Error conectando a la base de datos: {e}")
    sys.exit(1)

sentenciaSQL = """CREATE TABLE IF NOT EXISTS equipos
( idEquipo INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(40) NOT NULL,
ciudad VARCHAR(40) NOT NULL,
fundacion int NOT NULL,
PRIMARY KEY (idEquipo),
CONSTRAINT nombre_equipo UNIQUE (nombre)
);
"""
cur = conn.cursor()
cur.execute(sentenciaSQL)
conn.commit()
conn.close()

Con el ejemplo hemos creado la tabla equipos:

MariaDB con Python

Insertar un registro:

Ahora vamos a insertar un registro en la tabla equipos, por ejemplo el equipo Club Deportivo Teruel.

import mariadb
import sys

#Datos de conexión
try:
    conn = mariadb.connect(
        user="pythonMaster",
        password="Admin1234",
        host="localhost",
        port=3306,
        database="proves"
    )
except mariadb.Error as e:
    print(f"Error conectando a la base de datos: {e}")
    sys.exit(1)

nombreEquipo = 'Club Deportivo Teruel'
ciudadEquipo = 'Teruel'
fundacionEquipo = 1954
sentenciaSQL = f"""INSERT INTO equipos 
(nombre, ciudad, fundacion)
VALUES
('{nombreEquipo}','{ciudadEquipo}',{fundacionEquipo});
"""
cur = conn.cursor()
cur.execute(sentenciaSQL)
conn.commit()
conn.close()

Crear una tabla con clave foránea:

Ahora que tenemos la tabla equipos podemos crear jugadores que sean de un equipo, para ello deberemos indicar la clave foránea.

import mariadb
import sys

#Datos de conexión
try:
    conn = mariadb.connect(
        user="pythonMaster",
        password="Admin1234",
        host="localhost",
        port=3306,
        database="proves"
    )
except mariadb.Error as e:
    print(f"Error conectando a la base de datos: {e}")
    sys.exit(1)


sentenciaSQL = """CREATE TABLE IF NOT EXISTS jugadores
( idJugador INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(60) NOT NULL,
numero int NOT NULL,
idEquipo int NOT NULL,
PRIMARY KEY (idJugador),
CONSTRAINT fk_type
FOREIGN KEY(idEquipo) 
    REFERENCES equipos(idEquipo));
"""
cur = conn.cursor()
cur.execute(sentenciaSQL)
conn.commit()
conn.close()

MariaDB con Python

Hacer una consulta a la base de datos:

Vamos a consultar todos los datos de la tabla equipos con el nombre Club Deportivo Teruel:

import mariadb
import sys

#Datos de conexión
try:
    conn = mariadb.connect(
        user="pythonMaster",
        password="Admin1234",
        host="localhost",
        port=3306,
        database="proves"
    )
except mariadb.Error as e:
    print(f"Error conectando a la base de datos: {e}")
    sys.exit(1)

nombreEquipo = 'Club Deportivo Teruel'

sentenciaSQL = f"""SELECT * FROM equipos 
WHERE nombre = '{nombreEquipo}'; 
"""
cur = conn.cursor()
cur.execute(sentenciaSQL)
resultado = cur.fetchall()
conn.close()
for i in resultado:
    print(i)

Insertar registro en tabla con clave foránea:

Vamos a insertar un registro en la tabla de jugadores, para ello haremos dos consultas, en la primera buscamos el idEquipo del Club Deportivo Teruel, en la segunda insertamos los datos de un jugador en ese equipo.

import mariadb
import sys

#Datos de conexión
try:
    conn = mariadb.connect(
        user="pythonMaster",
        password="Admin1234",
        host="localhost",
        port=3306,
        database="proves"
    )
except mariadb.Error as e:
    print(f"Error conectando a la base de datos: {e}")
    sys.exit(1)

nombreEquipo = 'Club Deportivo Teruel'

sentenciaSQL = f"""SELECT idEquipo FROM equipos 
WHERE nombre = '{nombreEquipo}'; 
"""
cur = conn.cursor()
cur.execute(sentenciaSQL)
resultado = cur.fetchone()
idEquipo = resultado[0]

nombreJugador = 'Taliby Konate'
numeroJugador = 1
sentenciaSQL = f"""INSERT INTO jugadores 
(nombre, numero, idEquipo)
VALUES
('{nombreJugador}','{numeroJugador}',{idEquipo});
"""
cur = conn.cursor()
cur.execute(sentenciaSQL)
conn.commit()
conn.close()