Cómo acceder a MongoDB y administrar datos con Python

Cómo acceder a MongoDB y administrar datos con Python

Conectarse y realizar acciones como crear, leer, actualizar y eliminar (el famoso CRUD), son temas fundamentales en la vida de los desarrolladores. Muchos software se conectan, de alguna manera, a bases de datos, lo que requiere conocimientos sobre estas operaciones.

En este artículo, presentaré más información sobre MongoDB, una base de datos no relacional, cómo conectarse a ella y realizar estos procedimientos utilizando el lenguaje de programación Python.


Base de datos


Christopher J. Date, autor del libro Introducción a los sistemas de bases de datos, define una base de datos como “una colección de datos persistentes, utilizados por los sistemas de aplicaciones de una empresa determinada”.

Podemos ejemplificar este concepto con algo muy cotidiano: imagina que vas a una tienda de electrodomésticos. Al elegir el producto, el encargado dice que es necesario que le proporciones una serie de datos para que complete un registro en el sistema. Después de llenarlos, hace clic en un botón en la pantalla llamado guardar. ¿Adónde fue esta información? Cuando el profesional escribe su nombre o número de identificación fiscal, ¿de dónde saca esos elementos para mostrarlos en pantalla? Al eliminar los datos de un cliente, ¿cómo sucede esto?

Pues podemos inferir que tus datos fueron guardados en una base de datos, la cual almacena y posibilita una serie de operaciones como inserción, actualización, lectura y eliminación de información.

Hay dos tipos de bases de datos: relacionales y no relacionales. Las relacionales, como mySQL y SQL Server, almacenan datos en una o más tablas, con columnas y filas, que están relacionadas lógicamente. Las no relacionales, conocidas como NoSQL (como MongoDB y DynamoDB), no tienen la misma estructura, teniendo un formato de almacenamiento de datos mucho más flexible. Este es el caso en el que nos centraremos en este artículo, más concretamente en la forma en la que es posible conectarse a MongoDB utilizando el lenguaje Python, muy conocido en el mundo de la automatización.


MongoDB


MongoDB es una base de datos de documentos que funciona en formato JSON. Al ser no relacional, tiene una estructura flexible que puede modificarse con el tiempo. La solución tiene planes pagos, pero puedes utilizar la opción “compartida” que es gratuita, para desarrollar los pasos que se describirán en este artículo.

¿Qué es un archivo .json?


Un documento de notación de objetos JavaScript (JSON) tiene el formato de texto que contiene pares de claves y valores en su estructura, siendo las claves los identificadores y los valores los elementos correspondientes a las claves. Los valores pueden ser del tipo string, boolean, array, object, number y null.

Python

Python es un lenguaje de programación orientado a objetos muy utilizado por los desarrolladores. Según el sitio web Python Brasil, permite construir sistemas web, trabajar con análisis de datos, inteligencia artificial y aprendizaje automático, crear aplicaciones y sistemas de escritorio. Para este proyecto, usaremos la versión 3.11.2.

Dica: PyCharm

Para desarrollar este tutorial utilizamos PyCharm, que es uno de los editores de código más utilizados para trabajar con Python. Puedes descargar el IDE desde este enlace.


Instalando Python

Para descargar Python, ingresa a este link. Usamos la versión de Windows para realizar este tutorial. Después de la descarga, haz clic en el archivo e instálalo.

Creando un entorno virtual para desarrollar

Con el modo virtualenv, cree un entorno virtual para instalar paquetes y desarrollar la aplicación. El objetivo de esta medida es aislar el entorno y empaquetar todas las dependencias de nuestro proyecto para no instalar ningún paquete de forma global en el sistema operativo, sino sólo para su uso en un proyecto concreto.

Para instalar un virtualenv, abre la terminal y escribe: pip install virtualenv. Luego, crea el entorno virtual con el comando: virtualenv nome_da_<~virtualenv~>. Después de la creación, actívelo con el comando nome_da_virtualenv/Scripts/Activate. Recuerda que estos comandos son válidos para Windows, el sistema operativo utilizado en este tutorial. Para desactivar después de terminar de editar tu proyecto, usa el comando deactivate.


Instalando PyMongo


PyMongo es un paquete para trabajar con MongoDB y lo instalará utilizando el administrador de paquetes PIP. Presiona Windows + R, escribe pip install pymongo y presiona enter.

¿Y si hay un error en el PIP?

De forma predeterminada, PIP ya está instalado en Python, pero si ocurre el error "pip' no se reconoce como un comando interno o externo, un programa ejecutable o un archivo por lotes", debes seguir estos pasos:

1. Verifica si el PIP está instalado: navega hasta la carpeta donde está instalado Python e ingresa a la carpeta Scripts. Verifica si el ejecutable pip.exe está en la carpeta.

2. Si no está en la carpeta, sigue estos comandos para descargar e instalar el administrador.

3. Si el PIP está en la carpeta, pasamos al segundo paso: insertaremos la carpeta en las variables de entorno. Para ello, accede al Explorador de Archivos y aprieta el botón derecho del mouse en Este computador. Ingresa a la opción Configuraciones avanzadas del sistema, haz clic en la opción Avanzado y después en Variables de entorno. Luego, selecciona la variable Path y haz clic en Editar. Selecciona Nuevo y agrega la ruta de la carpeta Scripts. Reinicia el prompt de comando.


Creando un projeto

Abra la carpeta del proyecto en PyCharm y crea un archivo Python. En este proyecto, generamos el app.py. Acto seguido, importa el PyMongo, conforme con el código import pymongo.

Creando un cluster y una base de datos directamente en MongoDB

En el mundo profesional, muchas veces las bases de datos ya estarán operativas y será necesario integrar aplicaciones con estos entornos. Por lo tanto, este tutorial se centra en conectarse a una base de datos existente y, por lo tanto, creamos un clúster directamente en MongoDB Atlas solo para respaldar los ejemplos presentados en los siguientes temas.

Para seguir este tutorial, crea una cuenta en la plataforma, haz clic en create para crear tu cluster y selecciona una de las opciones. Para que la información sea más fácil de visualizar, optamos por realizar la conexión mediante MongoDB Compass, que es la interfaz gráfica de MongoDB. Para descargarlo, haga clic aquí y luego instálelo.

Con el cluster creado, genera la base de datos con el nombre y la contraseña que desees. Posteriormente, crea una collection, que será donde almacenarás tus documentos JSON. Guarda la información en un sitio seguro.


Conectarse a una base de datos

Después de conectarte a tu cluster con MongoDB Compass, haz clic en los tres puntos en el lado derecho y copia el connection string:


Ahora accede a la instancia de MongoDB con MongoClient. Para ver si la conexión fue exitosa y se está conectando a la base de datos, imprime de acuerdo con el código a continuación y haz clic en la pequeña flecha verde llamada Run.

import pymongo

from pymongo import MongoClient

cliente = pymongo.MongoClient("insira_a_connect_string_aqui")

database = cliente['insira_o_nome_do_banco_de_dados_aqui']

print(database)


Para acceder a tu colección y ver si todo está bien, ingresa el código a continuación y haz clic Run.

collection = database['insira_o_nome_da_coleção_aqui']

print(database.list_collection_names())

Insertando registros en tu base de datos

Insertando un nuevo registro

Para insertar un documento en la colección, utiliza el método insert_one(), como se muestra abajo:

novoProduto = {

"nome": "ultra sport",

"categoria": "tenis de corrida",

"tamanho": "38",

"cor": "azul"

}

inserir_novoProduto = collection.insert_one(produtos)

💡
Para este y los siguientes ejemplos, usaremos una collection llamada productos en una base de datos de una tienda ficticia de artículos deportivos llamada lojadoesporte.


Cuando revisamos en MongoDB Compass, nuestro registro quedó insertado:

Esta ID se crea automáticamente, pero se puede utilizar para identificar el registro.

Insertando varios registros

Para insertar más de un registro, utiliza el método insert_many().

novoProduto = [

{

"nome": "max shoe",

"categoria": "tenis de trekking",

"tamanho": 35,

"cor": "vermelho"

},

{

"nome": "super sandal",

"categoria": "sandalia",

"tamanho": 33,

"cor": "rosa"

},

{

"nome": "pretty shoe",

"categoria": "tenis casual",

"tamanho": 36,

"cor": "branco"

}


]

inserirNovoProduto = collection.insert_many(novoProduto)


Observa que los nuevos registros se insertaron debajo del primero.


Consultando los datos insertados

Consultar todos los datos

Para consultar todos los registros hechos en la colección, utiliza el método find() y haz un print en la pantalla para visualizar el retorno:

for items in collection.find():

print(items)

El retorno en la terminal del editor será:


Consultar solo un registro

Para buscar solo un registro, debes utilizar el método find(<~parâmetro~>). Checa cómo quedaría:

for item in collection.find({"nome": "pretty shoe"}):

print(item)

El retorno será:


Realizar una consulta utilizando expresiones regulares

Para consultar, por ejemplo, los tenis o zapatos que inician con la letra “p”, el código quedaría así:

consulta = {

"nome": {

"$regex": "^p"

}

}

for item in collection.find(consulta):

print(item)

En este caso, tendremos como retorno:

Actualizando registros

Actualizar un registro

Para actualizar un registro, el método utilizado sería update_one(). Éste actualizará el primer registro que encuentre con el valor definido en la variable consulta.

consulta = {

"nome": "pretty shoe"

}

novoValor = {

"$set":{

"cor": "verde"

}

}

collection.update_one(consulta, novoValor)

Antes:

Después:


Actualizar varios registros

Con el método update_many(), todos los registros basados en el valor insertado en la variable consulta serán actualizados.

consulta = {

"nome": {

"$regex" : "shoe"

}

}

novoValor = {

"$set": {

"nome": "tennis"

}

}

collection.update_many(consulta, novoValor)

Antes:


Después:

Eliminar registros

Eliminar un registro

El método delete_one() elimina el primer registro referente al valor almacenado en la variable consulta encontrada en la collection.

consulta = {

"nome": "super sandal"

}

collection.delete_one(consulta)


Antes:

Después:


Eliminando varios registros

Para eliminar más de un registro, se debe utilizar el método delete_many().

consulta = {

"nome": "tennis"

}

collection.delete_many(consulta)

Antes:

Después:


Conclusión

Hay múltiples acciones que se pueden realizar con el lenguaje de programación Python, especialmente en lo relacionado con integraciones de bases de datos.

En este tutorial, aprendiste paso a paso a conectarte y realizar operaciones de consulta, inserción, actualización y eliminación de documentos en MongoDB.

Espero que haya sido de ayuda. ¡Éxito!

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.