- 1 1. Introducción
- 2 2. Preparación del entorno (Instalación de MariaDB y Python)
- 3 3. Conexión a MariaDB
- 4 Resumen
- 5 4. Creación de Bases de Datos y Tablas
- 6 Resumen
- 7 5. Operaciones CRUD (Crear, Leer, Actualizar y Eliminar Datos)
- 8 Resumen
- 9 6. Transacciones y Reversión (Garantizando la Integridad de los Datos)
- 10 Resumen
- 11 7. Manejo de errores (Errores comunes y soluciones)
- 11.1 Access denied for user (Error de autenticación de usuario)
- 11.2 Can't connect to MySQL server on 'localhost' (Error de conexión)
- 11.3 Unknown database 'sample_db' (Base de datos no existe)
- 11.4 Table doesn't exist (Tabla no existe)
- 11.5 Duplicate entry (Error de duplicación de datos)
- 11.6 Número incorrecto de enlaces (Desajuste en el número de parámetros)
- 12 Resumen
- 13 8. Resumen
- 14 Resumen
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
- Descarga el instalador de MariaDB desde el sitio oficial.
- Ejecuta el instalador y sigue las instrucciones para instalarlo.
- Después de la instalación, verifica que MariaDB esté funcionando con el siguiente comando.
mysql -u root -p
- Si puedes iniciar sesión con éxito, la instalación está completa.
Para Mac
En Mac, puedes instalar MariaDB fácilmente usando Homebrew.
- 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)"
- Instala MariaDB.
brew install mariadb
- Inicia MariaDB.
brew services start mariadb
- Verifica la instalación.
mysql -u root -p
Para Linux (Ubuntu)
- Actualiza la lista de paquetes e instala MariaDB.
sudo apt update
sudo apt install mariadb-server mariadb-client
- Inicia MariaDB.
sudo systemctl start mariadb
- Habilita MariaDB (configura que se inicie automáticamente al arrancar).
sudo systemctl enable mariadb
- 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.
- Instala la biblioteca
mariadbusandopip.
pip install mariadb
- 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 |
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
- Inicie sesión en MariaDB y verifique los permisos del usuario.
mysql -u root -p
- Conceda los permisos necesarios al usuario.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 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
hostes incorrecta
Solución
1.ifique si el servidor está en ejecución.
sudo systemctl status mariadb
- Si el servidor está detenido, inícielo.
sudo systemctl start mariadb
- Verifique si la configuración de
hostes correcta.
Resumen
En esta sección, explicamos cómo conectar desde Python a MariaDB.
mariadb.connect()Método de conexión básico usando.envMé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 |
|---|---|---|
id | INT | User ID (auto-increment) |
name | VARCHAR(100) | Nombre de usuario (máx. 100 caracteres) |
email | VARCHAR(100) UNIQUE | Dirección de correo electrónico (sin duplicados) |
created_at | DATETIME | 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 objetocursor.- 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()yrollback()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
- Iniciar sesión en MariaDB y verificar los permisos del usuario
mysql -u root -p
- Configurar los permisos del usuario
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 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
hostes incorrecta
Soluciones
- Verificar si el servidor MariaDB está en ejecución
sudo systemctl status mariadb
- Iniciar el servidor si está detenido
sudo systemctl start mariadb
- 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
- Verificar la lista de bases de datos
SHOW DATABASES;
- 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
- Verificar la lista de tablas
SHOW TABLES;
- 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
emailtiene una restricciónUNIQUE
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
- 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.
- 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.
- Implementar un manejo sólido de errores
- Utiliza
try-exceptpara capturar posibles errores de antemano. - Prepara medidas de contingencia para cada error, como
OperationalErroroIntegrityError.
- 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
- SQL, 2ª Edición: Iniciando Operaciones de Base de Datos desde Cero – Una forma sólida de aprender los fundamentos de SQL
- Effective Python: 90 Maneras Específicas de Escribir Mejor en Python – Aprende las mejores prácticas de Python
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.


