0 calificaciones0% 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.
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 calificaciones0% 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.
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