Bases de datos MongoDB con Python

MongoDB con Python

Lo primero que tenemos que hacer para crear una base de datos MongoDB desde nuestro proyecto Python es crear un objeto MongoClient, tendremos que pasarle una URL de conexión (nosotros rescataremos esta URL de nuestra aplicación de escritorio Compass).

Cadena de conexión Compass para PyMongo
Captura de pantalla de Compass
import pymongo

mi_compass = pymongo.MongoClient('mongodb+srv://user:[email protected]/test?authMechanism=DEFAULT')
print(type(mi_compass))

# <class 'pymongo.mongo_client.MongoClient'>

Hemos guardado nuestro objeto en mi_compass, ahora tendremos que dar un nombre a la base de datos que queremos crear, la llamaremos → ddbb_oyoladev.

Crear base de datos MongoDB PyMongo

mi_ddbb = mi_compass['ddbb_oyoladev']

print(type(mi_ddbb))
# <class 'pymongo.database.Database'>

Debemos tener en cuenta que hasta que no hayamos creado una colección para nuestra base de datos MongoDB y esta colección contenga un documento, la base de datos no se creará, por lo cual no aparecerá cuando hagamos un listado de nuestras bases de datos.

print(mi_compass.list_database_names())

# []

Importante recordar → Crear un documento en una colección de nuestra base de datos en MongoDB es el equivalente a crear un registro en una tabla de nuestra base de datos.

Crear colección MongoDB PyMongo

El siguiente paso es crear una colección en nuestra base de datos, sin ser muy originales la llamaremos una_coleccion, en ella almacenaremos documentos.

coleccion = mi_ddbb['una_coleccion']

Podemos hacer nuevamente la comprobación imprimiendo un listado y veremos que aun sigue sin aparecernos la base de datos.

print(mi_compass.list_database_names())

# []

Insertar documento MongoDB PyMongo

Ahora insertaremos nuestros dos primeros documentos en la colección que acabamos de crear. Las bases de datos MongoDB son muy flexibles a la hora de guardar documentos, crearemos cada documento con una estructura diferente.

Importante recordar → La flexibilidad que nos proporcionan las bases de datos no relacionales son un arma de doble filo, almacenar documentos con estructuras muy distintas en nuestras colecciones nos puede complicar la vida bastante a la hora de realizar consultas.

Crearemos los dos documentos y los insertaremos uno a uno.

un_documento = {    'marca': 'Sega', 
                    'modelo': 'Megadrive'
                }
insertando = coleccion.insert_one(un_documento)

otro_documento = {  'marca': 'Nintendo', 
                    'modelo': 'NES', 
                    'lanzamiento': 1983, 
                    'tipo': '8 bits', 
                    'soporte': 'cartuchos'
                }
insertando = coleccion.insert_one(otro_documento)

Podemos ver en nuestra aplicación Compass que la base de datos se ha creado correctamente, con una colección llamada → una_coleccion y que almacena los dos documentos que acabamos de crear.

documentos creados desde Python

Si ahora realizamos un listado de nuestras bases de datos podemos ver que sí nos la muestra.

print(mi_compass.list_database_names())

# ['ddbb_oyoladev']

Bases de datos con PyMongo

Hasta ahora hemos realizado:

  • Crear base de datos.
  • Crear una colección en esa base de datos.
  • Insertar dos documentos en esa colección.

Si después de hacer esto volviésemos a ejecutar nuestro código anterior, es decir, realizar todo nuevo, MongoDB detectará que la base de datos ya existe y no creará una nueva, actualizará la base de datos existente insertando dos nuevos documentos.

Vamos a ejecutarlo y veremos cómo se muestra en Compass.

Más documentos en Compass

MongoDB nos permite volver a guardar los dos mismos documentos en nuestra colección porque de forma automática cada vez que almacenamos un documento genera un identificador propio, de esta manera ningún registro es idéntico a otro.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *