Python: Acceso a bases de datos

Aprende cómo acceder a MySQL y MongoDB desde código Python para realizar operaciones CRUD.

Aprende Python GRATIS y certifícate

El acceso a bases de datos en Python permite gestionar información de manera organizada y eficiente, facilitando la interacción con diferentes sistemas de almacenamiento. Para lograrlo, se hace uso de librerías y controladores específicos que habilitan la conexión y el intercambio de datos con MySQL y MongoDB.

Requisitos previos y configuración

Antes de iniciar, es imprescindible tener instalado Python y los paquetes necesarios. Para interactuar con MySQL, se recomienda mysql-connector-python o bibliotecas similares. Para MongoDB, la opción principal es pymongo. Ambas se instalan mediante la utilidad pip:

pip install mysql-connector-python
pip install pymongo

Con esta instalación, el entorno de desarrollo quedará listo para manejar instrucciones SQL o documentos en formato BSON, dependiendo de la base de datos utilizada.

Conexión a MySQL

El acceso a MySQL se realiza estableciendo un enlace con la base de datos, proporcionando datos como el usuario, la contraseña y el host. Un ejemplo de conexión básica es el siguiente:

import mysql.connector

conexion = mysql.connector.connect(
    host="localhost",
    user="usuario",
    password="contraseña",
    database="nombre_base_datos"
)

cursor = conexion.cursor()
cursor.execute("SELECT VERSION()")
resultado = cursor.fetchone()
print("Versión de MySQL:", resultado[0])

Aquí, la función mysql.connector.connect utiliza parámetros para la autenticación y la selección de la base de datos. Con la variable cursor se envían las consultas y se recuperan los resultados.

Ejecución de consultas en MySQL

Para gestionar información en MySQL, se pueden usar sentencias como INSERT, UPDATE o SELECT. Un ejemplo para crear una tabla e insertar datos sería:

cursor.execute("""
    CREATE TABLE IF NOT EXISTS empleados (
        id INT AUTO_INCREMENT PRIMARY KEY,
        nombre VARCHAR(100),
        puesto VARCHAR(100)
    )
""")

cursor.execute("""
    INSERT INTO empleados (nombre, puesto)
    VALUES ('María', 'Analista')
""")
conexion.commit()

Es fundamental llamar a commit() para confirmar los cambios en la base de datos. La ejecución correcta de estas consultas permite mantener una estructura coherente y persistente de la información.

Conexión a MongoDB

En el caso de MongoDB, se trabaja con documentos en formato JSON extendido. Para conectarse a un servidor local, se suele utilizar la librería pymongo:

from pymongo import MongoClient

cliente = MongoClient("mongodb://localhost:27017/")
db = cliente["mi_base_datos"]
coleccion = db["clientes"]

En este ejemplo, se crea un objeto MongoClient que establece la comunicación con la instancia de MongoDB. Después, se define la base de datos y la colección con la que se va a trabajar.

Inserción y consulta de documentos en MongoDB

Para insertar documentos en MongoDB, se utiliza el método insert_one o insert_many. De igual modo, se obtienen los documentos mediante find o find_one:

# Insertar un documento
documento = {"nombre": "Carlos", "edad": 35, "ciudad": "Madrid"}
coleccion.insert_one(documento)

# Consultar documentos
for doc in coleccion.find():
    print(doc)

Cada documento se representa como un diccionario de Python. Esto otorga flexibilidad a la hora de trabajar con información semiestructurada y facilita la adaptación de los datos a diversos casos de uso.

Buenas prácticas y consideraciones

  • Mantén separadas las credenciales de conexión del código fuente, empleando variables de entorno u otros métodos seguros.
  • Verifica que las sentencias SQL o métodos de inserción en MongoDB cumplan con el formato correcto para evitar errores de sintaxis.
  • Realiza copias de seguridad periódicas de la base de datos y controla el rendimiento a medida que crece el volumen de la información.
  • Utiliza herramientas de depuración en Python, como las disponibles en Visual Studio Code, para identificar cuellos de botella o comportamientos inesperados durante la interacción con la base de datos.
Empezar curso de Python

Lecciones de este módulo de Python

Lecciones de programación del módulo Acceso a bases de datos del curso de Python.