Conéctese localmente a una base de datos MongoDB usando Python

Tahseen Tauseef 10 octubre 2023
  1. Almacenar datos en MongoDB
  2. Conéctese localmente a una base de datos MongoDB usando Python
  3. Crear una colección en Python
  4. Insertar documentos en Python
  5. Consulta en Python
  6. Índice en Python y MongoDB
Conéctese localmente a una base de datos MongoDB usando Python

Python es el lenguaje de programación más frecuente para la ciencia de datos, y MongoDB, con su esquema flexible y dinámico, es una excelente combinación para crear aplicaciones web modernas, API JSON y procesadores de datos, por mencionar algunos ejemplos.

MongoDB también incluye un controlador de Python nativo y un equipo de ingenieros comprometidos a garantizar que MongoDB y Python funcionen juntos sin problemas.

Python proporciona un amplio soporte para operaciones comunes de manipulación y procesamiento de datos. Por ejemplo, el diccionario nativo de Python y las estructuras de datos de lista lo colocan en segundo lugar después de JavaScript cuando se manejan documentos JSON, lo que lo hace ideal para trabajar con BSON.

PyMongo, la biblioteca de controladores oficial de Python MongoDB, es igualmente simple y proporciona una API intuitiva para acceder a bases de datos, colecciones y documentos.

Los objetos extraídos de MongoDB mediante PyMongo son compatibles con diccionarios y listas, lo que permite una manipulación, iteración e impresión sencillas.

Almacenar datos en MongoDB

MongoDB almacena datos en documentos similares a JSON:

# Mongodb document (JSON-style)
document_1 = {
    "_id": "BF00001CFOOD",
    "item_name": "Bread",
    "quantity": 2,
    "ingredients": "all-purpose flour",
}

Los diccionarios de Python se ven así:

# python dictionary
dict_1 = {
    "item_name": "blender",
    "max_discount": "10%",
    "batch_number": "RR450020FRG",
    "price": 440,
}

Requisitos previos e instalación de Python

Descargue e instale Python en su máquina. Escriba python en la ventana de la línea de comandos para confirmar si su instalación es correcta.

Deberías obtener lo siguiente:

Python 3.9.1 (tags/v3.9.1:9cf6752, Feb  5 2021, 10:34:40) [MSC v.1927 64 bit (AMD64)] on win32
>>>

Puede seguir los ejemplos de Python MongoDB en esta lección si es nuevo en Python.

Conéctese localmente a una base de datos MongoDB usando Python

PyMongo proporciona un conjunto de bibliotecas para trabajar con MongoDB en Python. Para poner PyMongo en funcionamiento, abra el símbolo del sistema y escriba lo siguiente:

python -m pip install pymongo

Para este tutorial de Python MongoDB, utiliza MongoDB SRV URI. Así que instalemos dnspython:

python -m pip install dnspython

Ahora, puede usar PyMongo como una biblioteca de Python MongoDB en nuestro código con una declaración de importación. Pero, primero, creamos una base de datos MongoDB en Python.

Entonces, el primer paso para conectar Python es la configuración del clúster MongoDB.

A continuación, escriba el código de PyMongo en un archivo pymongo test insert.py en cualquier subdirectorio. Cualquier editor de texto simple, como Textpad/Notepad, será suficiente.

Agregue las siguientes líneas al cliente MongoDB:

def get_database():
    from pymongo import MongoClient
    import pymongo

    # Provide the mongodb 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)

    # Create the database for your example
    return client["user_shopping_list"]

    # This is added so that files can reuse the function get_database()
    if __name__ == "__main__":
        # Get database
        dbname = get_database()

Para obtener la conexión de la base de datos MongoDB, use CONNECTION_STRING para crear el cliente Mongo. Primero cambie el nombre del clúster, el nombre de usuario y la contraseña.

Hará una lista de compras y agregará algunos productos en esta lección de Python MongoDB. Hiciste una base de datos llamada lista de compras de usuarios para esto.

Por otro lado, MongoDB no establece una base de datos hasta que le haya agregado colecciones y documentos. Entonces, a continuación, hagamos una colección.

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 la sangría adecuada mientras copia el código en su archivo .py.

collection_name = dbname["user_1_items"]

Esto creará una colección llamada user_1_items en la base de datos user_shopping_list.

Insertar documentos en Python

Utilice el método insert_many() de PyMongo para insertar muchos documentos a la vez.

item1 = {
    "_id": "U1IT00001",
    "item_name": "Blender",
    "max_discount": "10%",
    "batch_number": "RR450020FRG",
    "price": 440,
    "category": "kitchen appliance",
}

item2 = {
    "_id": "U1IT00002",
    "item_name": "Egg",
    "category": "food",
    "quantity": 12,
    "price": 50,
    "item_description": "brown country eggs",
}
collection_name.insert_many([item1, item2])

Inserta el tercer documento sin mencionar el campo _id. Esta vez, incluirá un campo de tipo de datos de fecha.

Use el módulo dateutil de Python para agregar una fecha en PyMongo. Debido a que ISODate es una función de shell de Mongo, no funcionará con Python.

python -m pip install python-dateutil es el comando para instalar el paquete. Luego, en pymongo test.py, agregue lo siguiente:

from dateutil import parser

expiry_date = "2021-07-13T00:00:00.000Z"
expiry = parser.parse(expiry_date)
item3 = {
    "item_name": "Bread",
    "quantity": 2,
    "ingredients": "all-purpose flour",
    "expiry_date": expiry,
}
collection_name.insert_one(item3)

El método insertar uno () se utilizó para insertar un solo documento.

Primero, navegue a la ubicación donde guardó pymongo test insert.py usando la línea de comando. Luego, ejecute el archivo usando el comando Python pymongo test insert.py.

Consulta en Python

Puede ver todos los documentos juntos usando buscar(). Para eso, creará un archivo separado pymongo_test_query.py:

# Get the database using the method you defined in the pymongo_test_insert file
from pymongo_test_insert import get_database

dbname = get_database()

# Create a new collection
collection_name = dbname["user_1_items"]

item_details = collection_name.find()
for item in item_details:
    # This does not give a readable output
    print(item)

Navegue a la carpeta donde guardó pymongo test query.py usando la línea de comando. Puede usar el comando python pymongo test query.py y ejecutar el programa.

Los datos se pueden ver, pero el formato no es el ideal. Entonces, aquí están los nombres de los elementos y sus categorías para imprimir:

print(item["item_name"], item["category"])

Aunque MongoDB recibe todos los datos, obtiene un KeyError de python en el tercer documento. Use pandas para manejar problemas de datos faltantes en Python DataFrames.

Los DataFrames son estructuras de datos bidimensionales utilizadas en el procesamiento de datos. Por ejemplo, el método discover() de Pymongo devuelve objetos de diccionario que se pueden transformar en un marco de datos con solo una 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:

from pandas import DataFrame

# convert the dictionary objects to a data frame
items_dfs = DataFrame(item_details)
print(items_dfs)

Recuerda comentar el print(item['item name'], item['category']). Para los valores perdidos, se utilizan NaN y NaT para reemplazar los errores.

Índice en Python y MongoDB

El número de documentos y colecciones en una base de datos del mundo real crece continuamente. En una colección extensa, buscar documentos específicos, por ejemplo, registros que incluyan harina para todo uso como ingrediente, puede llevar mucho tiempo.

Los índices hacen que las búsquedas en bases de datos sean más rápidas, más eficientes y menos costosas; por ejemplo, ordenar, contar, unir, etc.

A nivel de colección, MongoDB define índices. Agrega nuevos documentos a nuestra colección para que el índice sea más lógico.

Usando el método insertar muchos (), puede insertar varios documentos simultáneamente.