0% encontró este documento útil (0 votos)
71 vistas

Acceso - MongoDB - Python

Este documento explica cómo conectar Python y MongoDB utilizando PyMongo. Detalla cómo crear una base de datos y colección, insertar y consultar documentos, e implementar indexación para mejorar el rendimiento de las consultas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
71 vistas

Acceso - MongoDB - Python

Este documento explica cómo conectar Python y MongoDB utilizando PyMongo. Detalla cómo crear una base de datos y colección, insertar y consultar documentos, e implementar indexación para mejorar el rendimiento de las consultas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 33

Universidad Nacional de Trujillo

Facultad de Ciencias Físicas y Matemáticas


Ingeniería Informática

Base de Datos Avanzada


Temas.
Introducción
Introducción.
Python, el principal lenguaje de programación para la ciencia de datos, y
MongoDB, con su esquema flexible y dinámico, son una combinación
fantástica para crear aplicaciones web modernas, API JSON,
procesadores de datos, solo por nombrar algunos. MongoDB tiene un
controlador de Python nativo y un equipo de ingenieros dedicados a
garantizar que MongoDB y Python funcionen juntos sin problemas.
Desarrollo
¿Qué es Python?
Python, la navaja suiza de los lenguajes tipificados dinámicamente de la
actualidad, cuenta con un amplio soporte para tareas comunes de
manipulación y procesamiento de datos. El diccionario nativo de Python y
los tipos de datos de lista lo hacen superado solo por JavaScript para
manipular documentos JSON, y es muy adecuado para trabajar con BSON .
PyMongo, la biblioteca de controladores MongoDB estándar para Python, es
fácil de usar y ofrece una API intuitiva para acceder a bases de datos,
colecciones y documentos.
Los objetos recuperados de MongoDB a través de PyMongo son compatibles
con diccionarios y listas, por lo que podemos manipularlos, iterarlos e
imprimirlos fácilmente.
Cómo MongoDB almacena datos
MongoDB almacena datos en documentos similares a JSON:

Los diccionarios de Python se parecen a:


Requisitos previos
Descargue e instale Python en su máquina (en esta captura de pantalla:
Windows. Notará una ligera diferencia de formato si usa otro sistema
operativo, pero el resultado debería ser el mismo). Para confirmar si su
instalación es correcta, escriba 'python' en la ventana de la línea de
comandos. Deberías obtener:
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40)
[MSC v.1927 64 bit (AMD64)] on win32 Type "help",
"copyright", "credits" or "license" for more information.
>>>
Conexión de Python y MongoDB Atlas
PyMongo tiene un conjunto de paquetes para la interacción de Python
MongoDB.
Para instalar PyMongo, abra la línea de comando y escriba:

Sugerencia: Si obtiene el error "ModuleNotFoundError: No module named


'pymongo'" , desinstale pymongo. Usa pip uninstall pymongoel comando.
Luego, vuelva a instalar usando el comando de instalación.
Conexión de Python y MongoDB Atlas
Para esta ocación usamos mongodb srv URI, así que instalemos dnspython:

Ahora, podemos usar pymongo como una biblioteca de python mongodb en


nuestro código con una declaración de importación.
Creando una base de datos MongoDB en Python
El primer paso para conectar python a Atlas es la configuración del clúster
de MongoDB .
A continuación, cree un archivo con el nombre pymongo_test_insert.pyen
cualquier carpeta para escribir el código pymongo. Puede usar cualquier
editor de texto simple como Textpad/Bloc de notas.
Cree el cliente mongodb agregando lo siguiente:
Creando una base de datos MongoDB en Python
def get_database():
from pymongo import MongoClient
import pymongo
# Provide the mongodb atlas url to connect python to mongodb using
pymongo
CONNECTION_STRING = "mongodb+srv://<username>:<password>@<cluster-
name>.mongodb.net/myFirstDatabase"
# Create a connection using MongoClient. You can import MongoClient or
use pymongo.MongoClient
from pymongo import MongoClient
client = MongoClient(CONNECTION_STRING)
Creando una base de datos MongoDB en Python
# Create the database for our example (we will use the same database
throughout the tutorial
return client['user_shopping_list']
# This is added so that many files can reuse the function get_database()
if __name__ == "__main__":

# Get the database


dbname = get_database()
Creando una base de datos MongoDB en Python
Use el connection_stringpara crear el mongoclient y obtener la conexión de
la base de datos MongoDB. Cambie el nombre de usuario, la contraseña y el
nombre del clúster.
En este tutorial de python mongodb, crearemos una lista de compras y
agregaremos algunos artículos. Para ello, creamos una base de datos
‘user_shopping_list’.
MongoDB no crea una base de datos hasta que tenga colecciones y
documentos en ella.
Crear una colección en Python
Para crear una colección, pase el nombre de la colección a la base de datos.
Asegúrese de tener la sangría correcta al copiar el código en su archivo .py.
collection_name = dbname["user_1_items"]
Esto crea una colección nombrada user_1_itemsen la base de
user_shopping_listdatos.
Insertar documentos en Python
Para insertar muchos documentos a la vez, use el método pymongo
insert_many().
Insertar documentos en Python
Insertemos un tercer documento sin especificar el _idcampo. Esta vez
agregamos un campo de tipo de datos 'fecha'. Para agregar una fecha
usando pymongo, use el paquete python dateutil. ISODate no funcionará
con Python, ya que es una función de shell de Mongo.
Instale el paquete usando el siguiente comando:python -m pip install
python-dateutil
Insertar documentos en Python
Agregue lo siguiente a pymongo_test.py:

Usamos el insert_one()método para insertar un solo documento.


Abra la línea de comando y navegue a la carpeta donde ha guardado
pymongo_test_insert.py. Ejecute el archivo usando el python
pymongo_test_insert.pycomando.
Insertar documentos en Python
Conectémonos a la interfaz de usuario de MongoDB Atlas y verifiquemos lo
que tenemos hasta ahora.
Inicie sesión en su clúster de Atlas y haga clic en el botón de colecciones.
En el lado izquierdo, puede ver la base de datos y el nombre de la colección
que creamos. Si hace clic en el nombre de la colección, también puede ver
los datos:
Insertar documentos en Python
El _idcampo es de tipo ObjectId por defecto. Si no especificamos el
_idcampo, MongoDB genera el mismo. No todos los campos presentes en
un documento están presentes en otros. Pero MongoDB no le impide
ingresar datos: esta es la esencia de una base de datos sin esquema.
Si volvemos a insertar item_3, mongodb insertará un nuevo documento, con
un nuevo _idvalor. Pero, las dos primeras inserciones generarán un error
debido al _idcampo, el identificador único.
Consultando en Python
Veamos todos los documentos juntos usando find(). Para eso vamos a crear
un archivo separado pymongo_test_query.py:
Consultando en Python
Abra la línea de comando y navegue a la carpeta donde ha guardado
pymongo_test_query.py. Ejecute el archivo usando el python
pymongo_test_query.pycomando.
Obtenemos la lista de objetos de diccionario como salida:

Podemos ver los datos, pero el formato no es tan bueno. Entonces,


imprimamos los nombres de los elementos y su categoría:
print(item['item_name'], item['category’])
Aunque Mongodb obtiene todos los datos, obtenemos un 'KeyError' de
python en el tercer documento.
Consultando en Python
Para manejar los errores de datos faltantes en python, use
pandas.DataFrames. Los DataFrames son estructuras de datos 2D que se
utilizan para tareas de procesamiento de datos. El método Pymongo find()
devuelve objetos de diccionario que se pueden convertir en un marco de
datos en una sola línea de código.
Instale la biblioteca pandas como:
python -m pip install pandas
Reemplace el ciclo for con el siguiente código para manejar KeyError en un
solo paso:
Consultando en Python
Y no olvides comentar elprint(item['item_name'], item['category'])
Los errores se reemplazan por NaN y NaT para los valores faltantes.
Indexación en Python MongoDB
La cantidad de documentos y colecciones en una base de datos del mundo
real siempre sigue aumentando. Puede llevar mucho tiempo buscar
documentos específicos, por ejemplo, documentos que tienen "harina para
todo uso" entre sus ingredientes, en una colección muy grande. Los índices
hacen que la búsqueda en la base de datos sea más rápida, eficiente y
reduce el costo de las consultas. Por ejemplo, ordenar, contar, emparejar,
etc.
MongoDB define índices a nivel de colección.
Para que el índice tenga más sentido, agregue más documentos a nuestra
colección. Inserte muchos documentos a la vez usando el
insert_many()método. Para documentos de muestra, copie el código de
github y ejecútelo python pymongo_test_insert_more_items.pyen su
terminal.
Indexación en Python MongoDB
Digamos que queremos los artículos que pertenecen a la categoría 'comida’:
item_details = collection_name.find({"category" : "food"})
Para ejecutar la consulta anterior, mongodb tiene que escanear todos los
documentos. Para verificar esto, descargue Compass . Conéctese a su clúster
mediante la cadena de conexión. Abra la colección y vaya a la pestaña
Explicar el plan. En 'filtro', proporcione los criterios anteriores y vea los
resultados:
Indexación en Python MongoDB
-
Indexación en Python MongoDB
Tenga en cuenta que la consulta escanea doce documentos para obtener
tres resultados.
Vamos a crear un índice único en el campo 'categoría'.
category_index = collection_name.create_index("category")
Explique el mismo filtro nuevamente en la interfaz de usuario de Compass:
Indexación en Python MongoDB
Esta vez solo se escanean tres documentos debido al índice de categorías.
No vemos una diferencia significativa en el tiempo de ejecución debido a la
menor cantidad de documentos. Pero vemos una gran reducción en la
cantidad de documentos escaneados para la consulta. Los índices también
ayudan en la optimización del rendimiento de las agregaciones . Las
agregaciones están fuera del alcance de este tutorial, pero aquí hay una
descripción general .
Cierre
Conclusiones.
Se aprendió los conceptos básicos de pymongo y se realizó operaciones
simples de base de datos.
Referencias.

Recuperado de: https://www.mongodb.com/languages/python

También podría gustarte