Cómo realizar operaciones CRUD en MongoDB con PyMongo en Ubuntu 20.04

El autor seleccionó el Fondo de Código Libre y Abierto para recibir una donación como parte del programa Write for DOnations .
Introducción
MongoDB es un programa de base de datos NoSQL de propósito general, orientado a documentos, que utiliza documentos de tipo JSON para almacenar datos. A diferencia de las relaciones tabulares utilizadas en bases de datos relacionales, los documentos de tipo JSON permiten esquemas flexibles y dinámicos, manteniendo al mismo tiempo la simplicidad. En general, las bases de datos NoSQL tienen la capacidad de escalar horizontalmente, lo que las hace adecuadas para big data y aplicaciones en tiempo real.
Un controlador o conector de base de datos es un programa que conecta una aplicación a un programa de base de datos. Para realizar operaciones CRUD en MongoDB con Python, se requiere un controlador para establecer el canal de comunicación. PyMongo es el controlador recomendado para trabajar con MongoDB desde Python.
En esta guía, escribirá un script de Python que crea, recupera, actualiza y elimina datos en un servidor MongoDB instalado localmente en Ubuntu 20.04. Al final, adquirirá las habilidades necesarias para comprender los conceptos subyacentes sobre cómo se mueven los datos en MongoDB y en una aplicación Python.
Prerrequisitos
Antes de continuar con esta guía, necesitará lo siguiente:
-
Un servidor Ubuntu 20.04 con al menos 1 GB de RAM configurado siguiendo la guía de configuración inicial del servidor Ubuntu 20.04 , incluido un usuario sudo no root y un firewall.
-
Una instalación de Python 3 con un entorno configurado en Ubuntu 20.04 utilizando esta guía de inicio rápido .
-
Una instalación del último servidor MongoDB compatible con Ubuntu 20.04 usando la guía Cómo instalar MongoDB en Ubuntu 20.04 .
-
Una configuración de seguridad de MongoDB en Ubuntu 20.04 para evitar acceso no autorizado.
Paso 1: Configuración de PyMongo
En este paso, instalará PyMongo, el controlador recomendado para MongoDB desde Python. Como conjunto de herramientas para trabajar con MongoDB, PyMongo facilita las solicitudes de bases de datos mediante sintaxis y una interfaz nativa de Python.
Para habilitar PyMongo, abre tu terminal de Ubuntu e instálalo desde el índice de paquetes de Python . Se recomienda instalar PyMongo dentro de un entorno virtual para aislar tu proyecto de Python. Consulta esta guía si no has visto cómo configurar un entorno virtual en los requisitos previos.
- pip3 install pymongo
pip3
se refiere a la versión Python 3 del popular instalador de paquetes pip para Python. Tenga en cuenta que dentro del entorno virtual Python 3 puede usar el comando pip
en lugar de pip3
.
Ahora, abre el intérprete de Python con el siguiente comando. El intérprete es una máquina virtual que funciona como un shell de Unix, donde puedes ejecutar código Python de forma interactiva.
- python3
Estás en el intérprete cuando obtienes un resultado similar al que se muestra a continuación:
OutputPython 3.8.5 (default, Jan 27 2021, 15:41:15)[GCC 9.3.0] on linuxType "help", "copyright", "credits" or "license" for more information.
Con una salida exitosa, importe pymongo
en el intérprete de Python:
- import pymongo
Con la import
instrucción, puedes acceder al pymongo
módulo y a su código en tu terminal. La import
instrucción se ejecutará sin generar excepciones.
En la siguiente línea, importe getpass :
- from getpass import getpass
getpass
es un módulo para administrar la introducción de contraseñas. El módulo solicita una contraseña sin mostrar ninguna entrada y agrega un mecanismo de seguridad para evitar que las contraseñas se muestren en texto sin formato.
Aquí, establezca una conexión con MongoClient para habilitar una instancia MongoDB de su base de datos. Declare una variable client
para almacenar la instancia MongoClient con host
, username
, password
y authMechanism
como argumentos:
- client = pymongo.MongoClient('localhost', username='username', password=getpass('Password: '), authMechanism='SCRAM-SHA-256')
Para conectarse a MongoDB con la autorización habilitada, MongoClient requiere cuatro argumentos:
- host : el nombre de host del servidor en el que está instalado MongoDB. Dado que Mongo es local en este contexto, utilice
localhost
. - nombre de usuario y contraseña : credenciales de autorización creadas después de habilitar la autenticación en MongoDB.
- authMechanism :
SCRAM-SHA-256
es el mecanismo de autenticación predeterminado compatible con un clúster configurado para la autenticación con MongoDB 4.0 o posterior.
Una vez que haya establecido la conexión con el cliente, ahora podrá interactuar con su instancia de MongoDB.
Paso 2: Prueba de bases de datos y colecciones
En este paso, se familiarizará con los conceptos NoSQL como colecciones y documentos aplicados a MongoDB.
MongoDB permite gestionar varias bases de datos independientes dentro de una instancia de MongoClient. Puede acceder a una base de datos o crearla mediante el estilo de atributo en una instancia de MongoClient. Declare una variable db
y asigne la nueva base de datos como un atributo de client
:
- db = client.workplace
En este contexto, la workplace
base de datos realiza un seguimiento de los registros de empleados que agregará, como el nombre y el rol del empleado.
A continuación, crea una colección. Al igual que las tablas en las bases de datos relacionales, las colecciones almacenan un grupo de documentos en MongoDB. En tu intérprete de Python, crea una employees
colección como atributo de db
y asígnala a una variable con el mismo nombre:
- employees = db.employees
Crea la employees
colección como un atributo de db
y asígnala a una variable con el mismo nombre.
Nota: En MongoDB, las bases de datos y las colecciones se crean de forma diferida. Esto significa que ninguno de los códigos anteriores se ejecuta hasta que se crea el primer documento.
Ahora que ha revisado las colecciones, veamos cómo MongoDB representa los documentos, la estructura básica para representar datos.
Paso 3: Realización de operaciones CRUD
En este paso, realizará operaciones CRUD para manipular datos en MongoDB. Crear, recuperar, actualizar y eliminar (CRUD) son las cuatro operaciones básicas de programación informática que se pueden realizar para crear almacenamiento persistente.
Para representar datos en Python como documentos tipo JSON, se utilizan diccionarios. Cree un registro de empleado de muestra con los atributos name
y role
:
- employee = {
- "name": "Sammy",
- "role": "Developer"
- }
Como puede ver, los diccionarios de Python son muy similares en sintaxis a los documentos JSON. PyMongo convierte los diccionarios de Python en documentos JSON para un almacenamiento de datos escalable.
En este punto, inserte el registro del empleado en la employees
colección:
- employees.insert_one(employee)
Al llamar al insert_one()
método en la employees
colección, se proporciona el registro del empleado creado anteriormente para insertarlo. Una inserción exitosa debería devolver un resultado exitoso como el siguiente:
Outputpymongo.results.InsertOneResult object at 0x7f8c5e3ed1c0
Ahora, verifique que haya insertado correctamente el registro del empleado y la colección. Realice una consulta para encontrar al empleado que acaba de crear:
- employees.find_one({"name": "Sammy"})
Al llamar al find_one()
método en la employees
colección con una consulta de nombre, se obtiene un único documento coincidente. Este método es útil cuando solo se tiene un documento o cuando se está interesado en la primera coincidencia.
El resultado debería ser similar a esto:
Output{'_id': ObjectId('606ae5b2358ddf640da46894'), 'name': 'Sammy', 'role': 'Developer'}
Nota: Cuando se inserta un documento, _id
se agrega automáticamente una clave única al documento si aún no contiene una _id
clave.
Si surge la necesidad de modificar documentos existentes, utilice el update_one()
método. El update_one()
método requiere dos argumentos query
y update
:
- consulta –
{"name": "Sammy"}
– PyMongo utilizará este parámetro de consulta para encontrar documentos con elementos que coincidan. - actualización –
{ "$set": {"role": "Technical Writer"} }
– El parámetro de actualización implementa$set operator
, que reemplaza el valor de un campo con el valor especificado.
Llamar al update_one()
método en la employees
colección:
- employees.update_one({"name": "Sammy"}, { "$set": {"role": "Technical Writer"} })
Una actualización exitosa devolverá un resultado similar a este:
Outputpymongo.results.UpdateResult object at 0x7f8c5e3eb940
Para eliminar un solo documento, utilice el delete_one()
método. delete_one()
Requiere un parámetro de consulta que especifica el documento que se eliminará. Ejecute el delete_one()
método como un atributo de la employees
colección con el nombre Sammy
como parámetro de consulta.
- employees.delete_one({"name": "Sammy"})
Esto eliminará la única entrada que tienes en tu employees
colección.
Outputpymongo.results.DeleteResult object at 0x7f8c5e3c8280
Al utilizar el find_one()
método nuevamente, es evidente que has eliminado exitosamente el registro de empleado de Sammy, ya que no se imprime nada en la consola.
- employees.find_one({"name": "Sammy"})
insert_one()
, find_one()
, update_one()
, y delete_one()
son excelentes formas de comenzar a realizar operaciones CRUD en MongoDB con PyMongo.
Conclusión
En esta guía, ha explorado cómo instalar y configurar PyMongo, el controlador de base de datos, para conectar el código Python a MongoDB, así como para crear, recuperar, actualizar y eliminar documentos. Aunque esta guía se centra en conceptos introductorios, PyMongo ofrece formas más potentes y flexibles de trabajar con MongoDB. Por ejemplo, puede realizar inserciones masivas, realizar consultas para más de un documento, agregar índices a las consultas y mucho más.
Para obtener más información sobre la administración de MongoDB, consulte Cómo realizar copias de seguridad, restaurar y migrar una base de datos MongoDB en Ubuntu 20.04 y Cómo importar y exportar una base de datos MongoDB en Ubuntu 20.04 .
Deja una respuesta