Introducción
En el desarrollo de software actual, las bases de datos NoSQL se han convertido en una pieza fundamental del stack tecnológico. MongoDB, como uno de los sistemas de gestión de bases de datos documentales más destacados, ofrece a los desarrolladores herramientas potentes para trabajar con datos no estructurados. PyMongo actúa como el driver oficial de Python para MongoDB, proporcionando una integración completa entre aplicaciones Python y MongoDB.
¿Qué es PyMongo?
PyMongo es la biblioteca oficial de Python para interactuar con MongoDB. Se trata de un driver de alto rendimiento que brinda acceso directo a todas las funcionalidades de MongoDB, incluyendo características modernas como transacciones, change streams y colecciones temporales.
Características clave de PyMongo
Compatibilidad y soporte de versiones
- Soporte para MongoDB versiones 3.6, 4.0, 4.2, 4.4, 5.0, 6.0 y 7.0
- Compatible con Python 3.7+
- Actualizaciones periódicas y parches de seguridad
Capacidades funcionales
- Soporte completo del formato BSON (Binary JSON)
- Soporte integrado para GridFS, ideal para almacenar archivos grandes
- Reconexión automática ante fallos
- Cifrado SSL/TLS
- Monitoreo de rendimiento y profiling
Ventajas arquitectónicas
- Operaciones thread-safe
- Pool de conexiones
- Detección automática de la topología del clúster
- Soporte para réplicas y sharding
Instalación y configuración de PyMongo
Instalación básica
pip install pymongo
Instalación con funcionalidades adicionales
# Para trabajar con cifrado
pip install pymongo[encryption]
# Para trabajar con Kerberos
pip install pymongo[gssapi]
# Para operaciones asíncronas
pip install motor
Verificar la instalación
import pymongo
print(pymongo.version)
Conexión a MongoDB
Formas principales de conexión
Conexión local
from pymongo import MongoClient
# Conexión simple
client = MongoClient()
# o
client = MongoClient('localhost', 27017)
# o
client = MongoClient('mongodb://localhost:27017/')
Conexión con autenticación
client = MongoClient('mongodb://usuario:contraseña@localhost:27017/')
Conexión a MongoDB Atlas
client = MongoClient('mongodb+srv://usuario:contraseña@cluster.mongodb.net/')
Conexión con SSL
client = MongoClient('mongodb://localhost:27017/',
ssl=True,
ssl_cert_reqs=ssl.CERT_NONE)
Parámetros de conexión
client = MongoClient(
host='localhost',
port=27017,
maxPoolSize=50,
minPoolSize=10,
maxIdleTimeMS=30000,
connectTimeoutMS=5000,
socketTimeoutMS=5000,
serverSelectionTimeoutMS=5000,
retryWrites=True,
retryReads=True
)
Componentes principales de PyMongo
Trabajar con bases de datos
# Obtener una base de datos
db = client['mibasededatos']
# o
db = client.mibasededatos
# Listar todas las bases de datos
bases_de_datos = client.list_database_names()
# Eliminar una base de datos
client.drop_database('mibasededatos')
# Obtener estadísticas de la base de datos
stats = db.command('dbstats')
Trabajar con colecciones
# Obtener una colección
coleccion = db['micoleccion']
# o
coleccion = db.micoleccion
# Crear una colección con opciones
db.create_collection('m