sql >> Base de Datos >  >> NoSQL >> MongoDB

Programación de base de datos Python con MongoDB para principiantes

El propósito de este tutorial de programación de bases de datos de Python es proporcionar una introducción sencilla al uso de una base de datos NoSQL como almacén de datos para aplicaciones de Python. El público objetivo son los desarrolladores de nivel principiante o los desarrolladores de nivel intermedio que están familiarizados con el uso de bases de datos orientadas a SQL, como Oracle, SQL Server o MySQL. Las demostraciones en este artículo serán paralelas a las demostraciones utilizadas en otros artículos de programación de bases de datos SQL que involucran a Python, como Programación de bases de datos de Python con SQL Express para principiantes y, de la misma manera, usarán Python 3.

¿Qué es NoSQL?

La popularidad de Python continúa creciendo en popularidad en parte debido a la facilidad con la que puede funcionar con nuevas tecnologías. Una de esas tecnologías "nuevas" es el uso de bases de datos "NoSQL". Una de las características más atractivas de este tipo de bases de datos es el hecho de que, como su nombre lo indica, generalmente no hay un lenguaje de consulta adicional, como una de las aparentemente muchas variantes de SQL, que se debe aprender para poder trabajar con la base de datos. desde el punto de vista programático. Esto facilita enormemente el desarrollo de aplicaciones porque las estructuras de datos nativas del lenguaje de programación y su sintaxis son el "lenguaje de consulta" de facto, siempre que, por supuesto, se agreguen los módulos apropiados al entorno de desarrollo.

Bases de datos NoSQL, además de principalmente sin usar un lenguaje de consulta, también estructura los datos internamente de una manera que es significativamente diferente a las bases de datos SQL. Un desarrollador que está más acostumbrado al paradigma de programación SQL debe adaptar su pensamiento para que coincida con la forma en que NoSQL hace negocios. Yendo más allá, el diseño de los servidores de bases de datos NoSQL comparte la misma diferencia. Los servidores de bases de datos NoSQL se centran más en la velocidad y la escalabilidad con "coherencia eventual", a diferencia de los servidores de bases de datos SQL, que se centran más en la coherencia inmediata.

¿Qué es MongoDB?

MongoDB es una de las muchas bases de datos "NoSQL". Al igual que MariaDB, utiliza su propio sistema de nombre de usuario y contraseña para la gestión de acceso. MongoDB, además de ofrecer software de servidor descargable de costo cero, también ofrece una opción introductoria basada en la nube de costo cero (a través de su Atlas oferta) que mitiga la necesidad de descargar y configurar una instancia. Las demostraciones de este tutorial de programación de bases de datos utilizarán la instancia gratuita alojada en la nube de MongoDB.

Como es el caso con Python y cualquier servidor de base de datos, un módulo de controlador de base de datos adicional, a saber, PyMongo , es necesario para que Python se comunique con el servidor MongoDB y cualquier base de datos que contenga. Además, como cualquier servidor de base de datos, MongoDB proporciona una herramienta de administración complementaria llamada MongoDB Shell . Las demostraciones de este artículo utilizarán una base de datos MongoDB creada con esta herramienta. Tenga en cuenta que MongoDB Shell es una de las muchas herramientas de administración que existen para MongoDB.

  • Descarga del servidor de la comunidad MongoDB
  • Oferta introductoria basada en la nube de costo cero de MongoDB
  • Descarga de shell de MongoDB

Tenga en cuenta que los enlaces publicados estaban activos en el momento en que se escribió este artículo. Si los enlaces ya no están activos, estos productos se pueden descargar a través de su motor de búsqueda preferido.

Cómo configurar MongoDB para el desarrollo de software

La oferta introductoria basada en la nube de costo cero de MongoDB la configuración está completamente basada en la web. Se puede vincular convenientemente a la cuenta de Google para fines de inicio de sesión único. Solo tenga en cuenta las siguientes advertencias:

  • Elija un servicio de alojamiento de datos que esté físicamente cerca. El servicio de alojamiento que se muestra en este artículo que se encuentra en Virginia puede no ser ideal para alguien que está lejos de allí.
  • La contraseña que se utiliza para conectar una aplicación al servidor de la base de datos debe guardarse de forma segura, ya que no se puede recuperar si se pierde. Solo se puede restablecer.
  • El nombre del clúster, una vez establecido, no se puede cambiar. Las demostraciones de este artículo utilizarán un clúster denominado Cluster0 .
  • Asegúrese de que cualquier dirección IP desde la cual cualquier aplicación, incluido MongoDB Shell, esté configurada en la configuración de seguridad.
  • Es posible que MongoDB Shell no tenga un programa de instalación. Siempre asegúrese de incluir la ruta a la carpeta que contiene esta aplicación en la ruta del sistema operativo.

Cómo conectarse al servidor de base de datos MongoDB

Al configurar con éxito el clúster de MongoDB basado en la nube, será necesario anotar la cadena de conexión particular utilizada para conectarse a él. Las cadenas a continuación también se pueden recuperar iniciando sesión en MongoDB Atlas Site y haciendo clic en Conectar botón:

Figura 1:el panel de MongoDB Atlas con el botón Conectar resaltado

Tenga en cuenta que las configuraciones como el nombre de usuario y la contraseña de la base de datos y los rangos de IP permitidos para la conexión se pueden configurar en los enlaces Acceso a la base de datos y Acceso a la red, respectivamente.

A continuación se muestran dos ejemplos de conexión. El primero es para MongoDB Shell.

MongoDB:conexión desde la línea de comandos

Abrir un Símbolo del sistema de Windows se explica en Programación de base de datos de Python con SQL Express para principiantes en Apertura de ventana del símbolo del sistema encabezado.

Figura 2:conexión a través de la línea de comandos a MongoDB Shell

Tenga en cuenta que el comando para abrir MongoDB Shell variará según el sistema operativo. El nombre del clúster puede variar, y los parámetros resaltados en el comando deberán cambiarse a los detalles de la configuración de MongoDB basada en la nube. En Windows, este comando se llama mongosh . Tenga en cuenta que el nombre de la base de datos RazorDemo se incluye a continuación, ya que es la base de datos que se utilizará en las demostraciones de este tutorial de programación. El comando también acepta un parámetro adicional para la contraseña como se muestra a continuación:

Figura 3:autenticación con la contraseña en la línea de comandos.

Tenga en cuenta que, si bien es conveniente para fines de desarrollo usar la contraseña en la línea de comando, en lugar de tener que escribirla cada vez, tenga en cuenta que la contraseña aparece en el historial de comandos ejecutados anteriormente. Esta opción no debe usarse en entornos de desarrollo donde otros usuarios pueden acceder al historial de comandos anterior.

Además, con suerte, nadie pensó que realmente usaría 123456 como contraseña, ¿verdad?

Figura 4:Solo revisando 🙂

Tenga en cuenta que en los dos ejemplos anteriores, ^ El carácter se utiliza como un símbolo de continuación de línea en el símbolo del sistema de Windows.

Conectando MongoDB desde Python

La siguiente cadena, con los cambios adecuados, se puede colocar en el código de Python para que la utilice PyMongo conductor:

Figura 5:conexión a través de Python y PyMongo

En la cadena de conexión anterior, el nombre de la base de datos RazorDemo se usará en lugar de myFirstDatabase .

Cómo crear una base de datos en MongoDB

MongoDB no "crea" una base de datos hasta que esa base de datos se "usa" y los datos se escriben en ella. La siguiente imagen muestra una conexión exitosa al servicio MongoDB Atlas usando RazorDemo base de datos, pero no hay tal base de datos en la lista cuando se utiliza el show dbs comando:

Figura 6:No hay base de datos RazorDemo... todavía

Cómo "usar" una base de datos en MongoDB

En MongoDB, una base de datos se "usa" cada vez que se conecta directamente mediante la cadena de consulta o cuando el nombre de la base de datos es el argumento del uso dominio. Observe cómo invocar este comando en la base de datos actualmente seleccionada muestra un mensaje diferente que cambiar a esa base de datos:

Figura 7:Cambiar entre bases de datos

Para “crear” realmente la base de datos, se deben insertar algunos datos. La demostración de Razor base de datos de los artículos anteriores, Primeros pasos con Razor Pages usando C# y Programación de base de datos de Python con SQL Express para principiantes, utiliza dos tablas, a saber, Artistas y Álbumes . En MongoDB, lo que una base de datos orientada a SQL llama tabla se denomina colección . Creando dos entradas en colecciones llamadas Artistas y Álbumes , respectivamente, crearán tanto la base de datos como las colecciones.

Cada entrada en una colección se denomina documento . Esto es análogo a un registro en una tabla de base de datos orientada a SQL.

Tenga en cuenta que, al igual que es importante para una aplicación principal, guardar la tabla crear declaraciones en una base de datos orientada a SQL, el mismo razonamiento también se aplicará a la base de datos inicial y los comandos de creación de colecciones para una base de datos MongoDB para una aplicación principal.

Los siguientes comandos crearán los Artistas colección insertando un solo documento en ella, y luego consultar los Artistas colección para verificar el éxito de la operación de inserción. Observe cómo la operación de inserción utiliza la sintaxis JSON:

db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})

db.Artists.find({})

Listing 1 - Inserting a new document.

Estos comandos dan el siguiente resultado en MongoDB Shell:

Figura 8:Creación de la colección Artistas

El _id que se muestra arriba se creó automáticamente y es único dentro de la colección, similar a un valor de clave principal generado automáticamente en una base de datos orientada a SQL.

Tenga en cuenta que MongoDB Shell puede informar que .insert() el comando está en desuso. Este ejemplo usa .insertOne() comando ya que esa es una de las alternativas provistas.

Se puede usar una sintaxis similar para crear los Álbumes colección:

db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})

db.Albums.find({})

Listing 2 - Inserting another new document

Figura 9:creación de la colección de álbumes

Tenga en cuenta que la advertencia relacionada con caniuse-lite aparece al presionar Enter clave antes de completar el comando para crear un documento. MongoDB Shell permitirá dividir un comando en varias líneas antes de completarlo. Esta advertencia indica que MongoDB Shell puede estar usando un controlador obsoleto y deberá actualizarse en una versión futura.

No parece interrumpir el proceso de creación de documentos.

Algunos documentos más para los Álbumes colección:

db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })

db.Albums.find({})

Listing 3 - Additional documents for the Albums collection

Figura 10:nuevos documentos adicionales del álbum

SIN restricciones de clave externa

Como MongoDB no es un sistema de gestión de bases de datos relacionales, no proporciona un mecanismo para hacer cumplir los tipos de restricciones de clave externa que se utilizan en las tablas de bases de datos orientadas a SQL entre colecciones. Espera que la aplicación mantenga y haga cumplir dichas relaciones. En el contexto de MongoDB Shell, corresponde al desarrollador escribir correctamente los valores para garantizar que se pueda inferir una relación entre los documentos de las colecciones.

El .deleteOne() El comando se puede usar para eliminar documentos ingresados ​​incorrectamente:

db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
Listing 4 - Deleting a document.

Tenga en cuenta que, si un documento no coincide con los parámetros ingresados, no se mostrará ningún error, en cambio, el mensaje de confirmación mostrará que no se eliminó nada:

Figura 11:mensaje de confirmación que muestra que no se eliminaron documentos

El .deleteMany() El comando se puede usar para eliminar varios registros que coincidan con un criterio JSON. El siguiente comando elimina todos los documentos de las colecciones de Álbumes en los que nombre_artista el valor no es Skeered Tigon Stripes :

db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})

Listing 5 - Deleting multiple documents based on criteria.

Figura 12:eliminación de varios registros

Reflexiones finales sobre la programación de bases de datos de Python con MongoDB

Ahora que hemos aprendido cómo conectarnos a una base de datos MongoDB y cómo crear una versión NO SQL de una tabla con "registros", podemos pasar a trabajar con scripts de Python para insertar datos en nuestra base de datos MongoDB. Continuaremos esa discusión en la segunda y última parte de este tutorial de programación de bases de datos Python:Desarrollo de bases de datos Python y MongoDB.