Guía completa de Python y MariaDB: Instalación, Conexión, Operaciones CRUD y Manejo de errores

目次

1. Introducción

Para quienes desean operar MariaDB con Python

Probablemente muchas personas quieran conectarse a MariaDB usando Python y realizar operaciones de datos. En este artículo, explicaremos en detalle desde lo básico hasta técnicas avanzadas para operar MariaDB con Python.

¿Tienes estas preocupaciones?

  • No sé cómo conectarme a MariaDB desde Python
  • Quiero agregar, recuperar, actualizar y eliminar datos fácilmente usando Python
  • Quiero conocer errores comunes y cómo manejarlos

Lo que puedes aprender de este artículo

  • Cómo conectarte fácilmente a MariaDB desde Python
  • Cómo implementar CRUD (agregar, recuperar, actualizar y eliminar datos)
  • Errores comunes y sus soluciones
  • Cómo mantener la integridad de los datos mediante procesamiento de transacciones

Al leer este artículo, podrás manejar MariaDB con fluidez usando Python. Vamos a profundizar en los detalles.

2. Preparación del entorno (Instalación de MariaDB y Python)

¿Qué es MariaDB?

MariaDB es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto y se utiliza ampliamente como sucesor de MySQL. Mantiene una alta compatibilidad con MySQL mientras mejora el rendimiento y añade nuevas funcionalidades.

Herramientas requeridas

Para manejar MariaDB con Python, necesitas preparar las siguientes herramientas.

  • Python (se recomienda la versión 3.x o superior)
  • MariaDB (Servidor)
  • Conector Python de MariaDB (biblioteca mariadb)

Procedimiento de instalación de MariaDB (por sistema operativo)

Para Windows

  1. Descarga el instalador de MariaDB desde el sitio oficial.
  2. Ejecuta el instalador y sigue las instrucciones para instalarlo.
  3. Después de la instalación, verifica que MariaDB esté funcionando con el siguiente comando.
mysql -u root -p
  1. Si puedes iniciar sesión con éxito, la instalación está completa.

Para Mac

En Mac, puedes instalar MariaDB fácilmente usando Homebrew.

  1. Si Homebrew no está instalado, instálalo con el siguiente comando.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Instala MariaDB.
brew install mariadb
  1. Inicia MariaDB.
brew services start mariadb
  1. Verifica la instalación.
mysql -u root -p

Para Linux (Ubuntu)

  1. Actualiza la lista de paquetes e instala MariaDB.
sudo apt update
sudo apt install mariadb-server mariadb-client
  1. Inicia MariaDB.
sudo systemctl start mariadb
  1. Habilita MariaDB (configura que se inicie automáticamente al arrancar).
sudo systemctl enable mariadb
  1. Configura MariaDB.
sudo mysql_secure_installation

Esto te permite establecer la contraseña de root y eliminar configuraciones predeterminadas innecesarias.

Instalación de Python y bibliotecas requeridas

Para conectar MariaDB y Python, necesitas instalar la biblioteca mariadb.

  1. Instala la biblioteca mariadb usando pip.
pip install mariadb
  1. Verifica la instalación.
import mariadb
print("The MariaDB library has been successfully installed.")

Si no aparecen errores, la instalación fue exitosa.

Con esto, la preparación del entorno para conectar Python y MariaDB está completa. A continuación, explicaremos cómo conectarse a MariaDB desde Python.

3. Conexión a MariaDB

Cómo conectarse a MariaDB usando Python

Importación de las bibliotecas requeridas

Para conectarse a MariaDB, importa la biblioteca mariadb de Python.

import mariadb

Código básico para conectarse a la base de datos

El siguiente código muestra el método básico para conectarse a MariaDB usando Python.

import mariadb

# Database connection information
config = {
    "host": "localhost",   # MariaDB server hostname
    "user": "root",        # MariaDB username
    "password": "password", # MariaDB password
    "database": "sample_db" # Database name to connect to
}

try:
    # Connect to MariaDB
    conn = mariadb.connect(**config)
    print("Connected to MariaDB!")

    # Create a cursor
    cursor = conn.cursor()

    # If the connection is successful, close the connection
    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Connection error: {e}")

Sobre los Argumentos de la Función connect()

Argument

Descripción

host

Dirección del servidor MariaDB (usualmente localhost)

user

Nombre de usuario de la base de datos

password

Database password

database

Nombre de la base de datos a conectar

Si el servidor es remoto, especifique la dirección IP o el nombre de dominio en host.

Método de Conexión Segura Usando Variables de Entorno

Escribir directamente información sensible como contraseñas en el código es peligroso desde la perspectiva de seguridad. Al usar variables de entorno, puede gestionarlo de manera más segura.

Instalación de python-dotenv

Primero, instale la biblioteca para gestionar variables de entorno.

pip install python-dotenv

Crear un archivo .env y Describir la Información de Conexión

Cree un archivo .env en la carpeta del proyecto y describa la información de conexión de la siguiente manera.

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=password
DB_NAME=sample_db

Cargar Variables de Entorno en un Script de Python

Para cargar el archivo .env en un script de Python, descríbalo de la siguiente manera.

import mariadb
import os
from dotenv import load_dotenv

# Load .env file
load_dotenv()

config = {
    "host": os.getenv("DB_HOST"),
    "user": os.getenv("DB_USER"),
    "password": os.getenv("DB_PASSWORD"),
    "database": os.getenv("DB_NAME")
}

try:
    conn = mariadb.connect(**config)
    print("Securely connected to MariaDB!")
    conn.close()
except mariadb.Error as e:
    print(f"Connection error: {e}")

Errores Comunes de Conexión y Sus Soluciones

Se presentan posibles errores que pueden ocurrir al conectar Python con MariaDB y sus soluciones.

Access denied for user 'root'@'localhost'

Contenido del Error
mariadb.OperationalError: Access denied for user 'root'@'localhost' (using password: YES)
Causa
  • La información de autenticación del usuario es incorrecta
  • La configuración de autenticación de MariaDB no es adecuada
Solución
  1. Inicie sesión en MariaDB y verifique los permisos del usuario.
mysql -u root -p
  1. Conceda los permisos necesarios al usuario.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  1. Intente conectarse nuevamente.

Can't connect to MySQL server on 'localhost'

Contenido del Error
mariadb.OperationalError: Can't connect to MySQL server on 'localhost' (10061)
Causa
  • El servidor MariaDB no está iniciado
  • La configuración de host es incorrecta
Solución

1.ifique si el servidor está en ejecución.

sudo systemctl status mariadb
  1. Si el servidor está detenido, inícielo.
sudo systemctl start mariadb
  1. Verifique si la configuración de host es correcta.

Resumen

En esta sección, explicamos cómo conectar desde Python a MariaDB.

  • mariadb.connect() Método de conexión básico usando
  • .env Método de conexión segura que utiliza el archivo
  • Errores comunes de conexión y sus soluciones

4. Creación de Bases de Datos y Tablas

Creación de una Base de Datos

En MariaDB, necesita crear una «base de datos» para almacenar datos. Veamos cómo crear una base de datos usando Python.

Creación de una Base de Datos Usando Herramientas de Gestión de MariaDB

Puede crear una base de datos usando la línea de comandos de MariaDB (o herramientas GUI como MySQL Workbench).

CREATE DATABASE sample_db;

Para verificar la lista de bases de datos creadas, use el siguiente comando.

SHOW DATABASES;

Creación de una Base de Datos Usando Python

Al crear una base de datos usando Python, ejecute el siguiente código.

import mariadb

# Database connection (no database specified)
config = {
    "host": "localhost",
    "user": "root",
    "password": "password"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Creating the database
    cursor.execute("CREATE DATABASE IF NOT EXISTS sample_db")

    print("Created database 'sample_db'.")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")

Al agregar IF NOT EXISTS, puedes evitar errores si ya existe una base de datos con el mismo nombre.

Creación de Tablas

Una vez que la base de datos está creada, a continuación crea una tabla para almacenar los datos.

Estructura Básica de la Tabla

Las tablas tienen una estructura como la siguiente.

Nombre de columna

Tipo de datos

Descripción

idINT

User ID (auto-increment)

nameVARCHAR(100)

Nombre de usuario (máx. 100 caracteres)

emailVARCHAR(100) UNIQUE

Dirección de correo electrónico (sin duplicados)

created_atDATETIME

Fecha y hora de creación

Creación de una Tabla con SQL

Al crear una tabla usando los comandos SQL de MariaDB, descríbela de la siguiente manera.

USE sample_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Para verificar la lista de tablas, utiliza el siguiente comando.

SHOW TABLES;

Creación de una Tabla Usando Python

Así es como se crea la misma tabla usando un script de Python.

import mariadb

# Database connection
config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Table creation SQL
    table_creation_query = """
    CREATE TABLE IF NOT EXISTS users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        email VARCHAR(100) UNIQUE NOT NULL,
        created_at DATETIME DEFAULT CURRENT_TIMESTAMP
    )
    """

    cursor.execute(table_creation_query)
    print("Created table 'users'.")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")

Al agregar IF NOT EXISTS, puedes evitar errores si la tabla ya existe.

Elección de Tipos de Datos

Al diseñar tablas, es importante seleccionar tipos de datos apropiados. A continuación se muestra un resumen de los tipos de datos comúnmente usados en MariaDB.

Tipo de datos

Usage

Ejemplo

INT

Integer type (e.g., ID)

123
VARCHAR(n)

Cadena (longitud variable)

"Alice"
TEXT

Texto largo (más de 1000 caracteres)

"This is a long sentence."
DATE

Tipo de fecha

2024-02-21
DATETIME

Tipo de fecha y hora

2024-02-21 12:34:56
BOOLEAN

Valor booleano

TRUEFALSE

Por ejemplo, es común usar VARCHAR(100) para el campo name, pero si necesitas cadenas más largas, usar TEXT también es una buena opción.

Cómo Verificar y Eliminar Tablas Existentes

Verificando Tablas Existentes

Para verificar las tablas en la base de datos, utiliza el siguiente SQL.

SHOW TABLES;

Además, para verificar la estructura detallada de una tabla, ejecuta el comando DESCRIBE.

DESCRIBE users;

Eliminando una Tabla

Para eliminar una tabla, usa DROP TABLE.

DROP TABLE users;

Al eliminar desde Python, ejecuta el siguiente código.

cursor.execute("DROP TABLE IF EXISTS users")

Resumen

En esta sección, explicamos cómo crear bases de datos y tablas para almacenar datos en MariaDB.

  • Cómo Crear una Base de Datos en MariaDB
  • Cómo Crear Tablas Usando Python
  • Cómo Elegir Tipos de Datos Apropiados
  • Cómo Verificar y Eliminar Tablas Existentes

Esto completa la configuración básica de MariaDB. En la siguiente sección, explicaremos en detalle sobre operaciones CRUD (crear, leer, actualizar y eliminar datos).

5. Operaciones CRUD (Crear, Leer, Actualizar y Eliminar Datos)

La creación de la base de datos y las tablas en MariaDB está completa, por lo que a continuación se realizan operaciones CRUD. CRUD es un acrónimo de Create (creación), Read (recuperación), Update (actualización), Delete (eliminación), que se refiere a las operaciones básicas de una base de datos.

En esta sección, explicamos cómo manipular datos de MariaDB usando Python.

Inserción de Datos (INSERT)

Para agregar un nuevo registro a la base de datos, utiliza la sentencia INSERT.

Inserción de Datos Usando SQL

Al insertar datos usando SQL de MariaDB, ejecuta el siguiente comando.

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

Para confirmar los datos insertados, utilice la sentencia SELECT.

SELECT * FROM users;

Inserción de datos en Python

Al insertar datos con Python, ejecute el siguiente código.

import mariadb

# Database connection settings
config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Insert data
    insert_query = "INSERT INTO users (name, email) VALUES (?, ?)"
    data = ("Alice", "alice@example.com")
    cursor.execute(insert_query, data)

    # Save changes
    conn.commit()
    print("Data added!")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")

Puntos:

  • El uso de marcadores de posición ? puede prevenir inyección SQL.
  • Si no ejecuta conn.commit(), los datos no se guardarán en la base de datos.

Recuperación de datos (SELECT)

Para recuperar los datos registrados, utilice la sentencia SELECT.

Recuperación de datos usando SQL

El método para recuperar datos usando SQL de MariaDB es el siguiente.

SELECT * FROM users;

Al especificar condiciones para la recuperación, use la cláusula WHERE.

SELECT * FROM users WHERE email = 'alice@example.com';

Recuperación de datos en Python

Para recuperar datos con Python, ejecute el siguiente código.

import mariadb

config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Retrieve data
    select_query = "SELECT id, name, email FROM users"
    cursor.execute(select_query)

    # Display retrieved data
    for (id, name, email) in cursor:
        print(f"ID: {id}, Name: {name}, Email: {email}")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")

Puntos:

  • Ejecute SQL con cursor.execute(select_query) y recupere los datos del objeto cursor.
  • Puede procesar los datos uno por uno usando un bucle for.

Actualización de datos (UPDATE)

Para modificar los datos registrados, utilice la sentencia UPDATE.

Actualización de datos usando SQL

Al actualizar datos con SQL de MariaDB, ejecute el siguiente comando.

UPDATE users SET name = 'Alice Smith' WHERE email = 'alice@example.com';

Actualización de datos en Python

Para actualizar datos con Python, ejecute el siguiente código.

import mariadb

config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Update data
    update_query = "UPDATE users SET name = ? WHERE email = ?"
    data = ("Alice Smith", "alice@example.com")
    cursor.execute(update_query, data)

    # Save changes
    conn.commit()
    print("Data updated!")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")

Eliminación de datos (DELETE)

Para eliminar datos innecesarios, utilice la sentencia DELETE.

Eliminación de datos usando SQL

Para eliminar datos con SQL de MariaDB, ejecute el siguiente comando.

DELETE FROM users WHERE email = 'alice@example.com';

Eliminación de datos en Python

Para eliminar datos con Python, ejecute el siguiente código.

import mariadb

config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Delete data
    delete_query = "DELETE FROM users WHERE email = ?"
    data = ("alice@example.com",)
    cursor.execute(delete_query, data)

    # Save changes
    conn.commit()
    print("Data deleted!")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")

Resumen

En esta sección, explicamos cómo manipular datos de MariaDB usando Python.

  • Adición de datos (INSERT)
  • Recuperación de datos (SELECT)
  • Actualización de datos (UPDATE)
  • Eliminación de datos (DELETE)

Con esto, ahora puedes realizar operaciones básicas de datos en MariaDB usando Python.

6. Transacciones y Reversión (Garantizando la Integridad de los Datos)

Al operar en una base de datos, es importante utilizar transacciones para mantener la integridad de los datos.
En particular, la función de revertir los datos a su estado original (rollback) si ocurre un error a mitad de camino es esencial para mantener la consistencia de los datos.

Esta sección explica cómo gestionar transacciones en MariaDB usando Python.

¿Qué es una Transacción?

Una transacción es un mecanismo que agrupa una serie de operaciones de base de datos en una sola unidad, confirma los datos si todos los procesos tienen éxito y revierte todos los cambios si ocurre un error.

Características de las Transacciones

  • Propiedades ACID
  • Atomicidad : El procesamiento se completa totalmente o no se realiza en absoluto.
  • Consistencia : Los datos mantienen la integridad.
  • Aislamiento : Las transacciones concurrentes no se afectan entre sí.
  • Durabilidad : Una vez que el procesamiento se completa, los cambios se guardan permanentemente.

Operaciones Básicas de Transacción (COMMIT y ROLLBACK)

Las transacciones en MariaDB pueden controlarse con los siguientes comandos.

Command

Descripción

START TRANSACTION;

Inicio de la transacción

COMMIT;

Confirmar cambios (no se puede deshacer después de confirmar)

ROLLBACK;

Cancelar cambios (revertir al estado original)

Usando Transacciones en Python

Aquí tienes una introducción al código básico para gestionar transacciones de MariaDB usando Python.

Gestionando Múltiples Operaciones de Datos en una Sola Transacción

El siguiente código trata el proceso de agregar múltiples datos como una sola transacción y confirma (finaliza) si todos los procesos tienen éxito.

import mariadb

config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Start transaction
    conn.start_transaction()

    # Add data
    cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Bob", "bob@example.com"))
    cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Charlie", "charlie@example.com"))

    # Commit (finalize) if all processes succeed
    conn.commit()
    print("Data added successfully.")

    cursor.close()
    conn.close()
except mariadb.Error as e:
    print(f"Error occurred: {e}")
    conn.rollback()  # Rollback (revert) if an error occurs

Puntos

  • Inicia la transacción con conn.start_transaction() .
  • Confirma los cambios con conn.commit() (no se puede revertir después de confirmar).
  • Si ocurre un error, usa conn.rollback() para cancelar los cambios de datos y revertir al estado original.

Manejo de Errores Usando Transacciones

En las operaciones de base de datos, existe la posibilidad de que ocurran errores a mitad de camino.
Por ejemplo, se pueden considerar casos como dirección de correo duplicada (violación de restricción UNIQUE) o tiempo de espera del servidor.

Gestión de Transacciones con Manejo de Errores

El siguiente código añade procesamiento para ejecutar rollback si ocurre un error a mitad de camino y revertir los datos al estado original.

import mariadb

config = {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "sample_db"
}

try:
    conn = mariadb.connect(**config)
    cursor = conn.cursor()

    # Start transaction
    conn.start_transaction()

    try:
        # Add data (first one succeeds)
        cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Dave", "dave@example.com"))

        # Error occurs in second processing (email duplicate)
        cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Eve", "dave@example.com"))

        # Commit if all processes succeed
        conn.commit()
        print("Data added.")

    except mariadb.Error as e:
        print(f"Error occurred during data processing: {e}")
        conn.rollback()  # Cancel changes on error
        print("Data rolled back.")

    cursor.close()
    conn.close()

except mariadb.Error as e:
    print(f"Database connection error: {e}")

Resumen

En esta sección, explicamos los fundamentos de las transacciones y los métodos de implementación usando Python.

  • La importancia de las transacciones y las propiedades ACID
  • Cómo usar commit() y rollback() en Python
  • Gestión de transacciones combinada con manejo de errores

7. Manejo de errores (Errores comunes y soluciones)

Al operar MariaDB con Python, pueden ocurrir errores.
En particular, errores de conexión a la base de datos, errores de sentencias SQL y errores de integridad de datos ocurren con frecuencia, por lo que es importante comprender sus causas y soluciones.

Esta sección presenta las causas de los errores comunes y cómo manejarlos.

Access denied for user (Error de autenticación de usuario)

Detalles del error

mariadb.OperationalError: Access denied for user 'root'@'localhost' (using password: YES)

Causas

  • El nombre de usuario o la contraseña son incorrectos
  • No se han configurado los permisos adecuados para el usuario de MariaDB

Soluciones

  1. Iniciar sesión en MariaDB y verificar los permisos del usuario
   mysql -u root -p
  1. Configurar los permisos del usuario
   GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
   FLUSH PRIVILEGES;
  1. Reiniciar MariaDB
   sudo systemctl restart mariadb

Can't connect to MySQL server on 'localhost' (Error de conexión)

Detalles del error

mariadb.OperationalError: Can't connect to MySQL server on 'localhost' (10061)

Causas

  • El servidor MariaDB no está en ejecución
  • La configuración de host es incorrecta

Soluciones

  1. Verificar si el servidor MariaDB está en ejecución
   sudo systemctl status mariadb
  1. Iniciar el servidor si está detenido
   sudo systemctl start mariadb
  1. Configurar el servidor para que se inicie automáticamente
   sudo systemctl enable mariadb

Unknown database 'sample_db' (Base de datos no existe)

Detalles del error

mariadb.ProgrammingError: Unknown database 'sample_db'

Causas

  • La base de datos especificada no existe
  • Error tipográfico en el nombre de la base de datos

Soluciones

  1. Verificar la lista de bases de datos
   SHOW DATABASES;
  1. Crear la base de datos si no existe
   CREATE DATABASE sample_db;

Table doesn't exist (Tabla no existe)

Detalles del error

mariadb.ProgrammingError: Table 'sample_db.users' doesn't exist

Causas

  • La tabla especificada no existe
  • No se seleccionó la base de datos con USE sample_db;

Soluciones

  1. Verificar la lista de tablas
   SHOW TABLES;
  1. Crear la tabla si no existe
   CREATE TABLE users (
       id INT AUTO_INCREMENT PRIMARY KEY,
       name VARCHAR(100) NOT NULL,
       email VARCHAR(100) UNIQUE NOT NULL,
       created_at DATETIME DEFAULT CURRENT_TIMESTAMP
   );

Duplicate entry (Error de duplicación de datos)

Detalles del error

mariadb.IntegrityError: Duplicate entry 'alice@example.com' for key 'users.email'

Causas

  • No se puede insertar el mismo valor porque la columna email tiene una restricción UNIQUE

Soluciones

  • Realizar una verificación de duplicados antes de insertar datos
  • Usar ON DUPLICATE KEY UPDATE

Código para prevenir duplicados en Python

try:
    cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Alice", "alice@example.com"))
    conn.commit()
except mariadb.IntegrityError:
    print("Error: The email address already exists.")

O usar ON DUPLICATE KEY UPDATE

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')
ON DUPLICATE KEY UPDATE name = 'Alice Updated';

Número incorrecto de enlaces (Desajuste en el número de parámetros)

Detalles del error

mariadb.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 1 supplied.

Causas

  • El número de parámetros requeridos por el SQL no coincide con el número de argumentos realmente pasados

Soluciones

  • Ajustar el número de marcadores con el número de elementos de datos

Código incorrecto

cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Alice"))

Código correcto

cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Alice", "alice@example.com"))

Resumen

En esta sección, discutimos los errores comunes que ocurren al operar MariaDB con Python y sus contramedidas.

  • Access denied for user (Error de autenticación)
  • Can't connect to MySQL server (Error de conexión)
  • Unknown database (Base de datos no existe)
  • Table doesn't exist (Tabla no existe)
  • Duplicate entry (Error de duplicación de datos)
  • Incorrect number of bindings (Desajuste en el número de parámetros)

8. Resumen

En este artículo, explicamos en detalle cómo operar MariaDB usando Python, desde lo básico hasta temas avanzados.
Al comprender las operaciones básicas de bases de datos y manejar adecuadamente el manejo de errores y la gestión de transacciones, puedes realizar operaciones de datos más seguras y eficientes.

Revisión del artículo

Preparación del entorno

  • Cómo instalar MariaDB (Windows / Mac / Linux)
  • Instalación de la biblioteca de conexión Python y MariaDB (mariadb)

Conexión a MariaDB

  • Métodos básicos de conexión a la base de datos
  • Conexiones seguras usando variables de entorno
  • Soluciones para errores que ocurren durante la conexión

Creación de bases de datos y tablas

  • Creación de bases de datos (SQL/Python)
  • Creación de tablas y elección de tipos de datos
  • Verificación y eliminación de tablas existentes

Operaciones CRUD (Agregar, Recuperar, Actualizar y Eliminar datos)

  • Operaciones básicas de datos usando Python
  • Uso de marcadores para prevenir inyección SQL
  • Manejo adecuado de errores

Transacciones y Rollback

  • Importancia de las transacciones (Propiedades ACID)
  • Cómo revertir datos en caso de error (Rollback)
  • Deshabilitar AutoCommit para gestionar transacciones manualmente

Manejo de errores (Errores comunes y soluciones)

  • Errores de autenticación (Access denied for user)
  • Errores de conexión (Can't connect to MySQL server)
  • Errores por bases de datos o tablas inexistentes
  • Errores de duplicación de datos (Duplicate entry)
  • Ocurrencia de deadlock e implementación de reintentos

Puntos clave al combinar Python y MariaDB

  1. Aprovechar los marcadores
   cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Alice", "alice@example.com"))

→ Al enlazar variables en lugar de incrustarlas directamente en las sentencias SQL, puedes prevenir la inyección SQL.

  1. Realizar una gestión adecuada de transacciones
  • Usar conn.commit() para confirmar explícitamente los cambios.
  • En caso de errores, usar conn.rollback() para mantener la integridad de los datos.
  1. Implementar un manejo sólido de errores
  • Utiliza try-except para capturar posibles errores de antemano.
  • Prepara medidas de contingencia para cada error, como OperationalError o IntegrityError.
  1. Considera el Rendimiento
  • Inserción Masiva (agregar varios registros a la vez)
  • Configuración de Índices Apropiados (para mejorar la velocidad de búsqueda)

Recursos para Aprender Más

Para quienes deseen profundizar en la integración de Python con MariaDB, se recomiendan los siguientes recursos.

Documentación Oficial

Contenidos Relacionados de Aprendizaje

Libros Recomendados

Resumen

Al integrar MariaDB con Python, la gestión de datos mediante scripts y la automatización se vuelven posibles.

No solo las operaciones CRUD básicas, sino que al implementar correctamente el manejo de errores y la gestión de transacciones, puedes construir un sistema más seguro y eficiente.

Como siguiente paso, aprendamos sobre «gestión eficiente de datos» y «integración con APIs» y apliquémoslo a operaciones prácticas de bases de datos.