Conéctese localmente a una base de datos MongoDB usando Python
- Almacenar datos en MongoDB
- Conéctese localmente a una base de datos MongoDB usando Python
- Crear una colección en Python
- Insertar documentos en Python
- Consulta en Python
- Índice en Python y MongoDB
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.