Haga que la API de Python acceda a la base de datos de Mongo Atlas

Requisito previo:   Python | Cree una API REST usando Flask

Las API RESTful son una herramienta muy útil para administrar el backend de una aplicación. Se puede utilizar para definir la arquitectura así como gestionar las dependencias de la aplicación mediante rutas gestionadas por la API. Flask es un micro framework popular para crear aplicaciones web.

En este artículo, aprenderemos cómo crear una API Flask RESTful que se conecte al servicio de base de datos MongoDB Atlas de MongoDB. Antes de eso, debe crear una cuenta de usuario en MongoDB Atlas utilizando su dirección de correo electrónico.

Una vez que haya terminado con la configuración inicial. Siga los pasos a continuación:

  • Paso 1: Haga su nuevo proyecto, haciendo clic en el botón ‘Nuevo Proyecto’ . Asigne un nombre a su proyecto y agregue miembros (si los hay) a la forma en que desea dar acceso al proyecto. Cree un proyecto haciendo clic en el botón ‘Crear proyecto’ . Su panel de control debería verse así.

  • Paso 2: Haga clic en ‘Crear un clúster’ . Seleccione ‘Clúster compartido’ en la ventana emergente. Seleccione la configuración requerida. Por ejemplo: proveedor de la nube de AWS y región de Mumbai. Se le dará 512 MB de espacio en la nube para alojar su base de datos. Crear clúster . Su tablero se verá así.

  • Paso 3: Ahora, haga clic en ‘Conectar’ . Se abrirá un cuadro de diálogo. Siga las instrucciones que se muestran. Agregue su dirección IP a la lista blanca. Esta es la lista de direcciones IP que pueden acceder a la base de datos. A continuación, cree su nombre de usuario y contraseña para acceder a la base de datos. Ahora, haz clic en ‘Elegir un método de conexión’ .
  • Paso 4: Ahora, haga clic en ‘Conectar su aplicación’ en el nuevo cuadro de diálogo que aparece. Seleccione ‘Python’ en el menú desplegable Controlador y ‘3.6 o posterior’ en el menú desplegable Versión. Copie el enlace en la siguiente línea. Se vería como:
mongodb+srv://admin:<password>@cluster0-pm5vp.mongodb.net/test?retryWrites=true&w=majority
  • Paso 5: Su nombre de usuario aparece en el enlace (aquí, admin). Reemplace <contraseña> con la contraseña de este usuario.

Este es el enlace o la URL que conecta su API de Python a la base de datos. Ahora, cree una base de datos de muestra haciendo clic en la pestaña ‘Colecciones’ en su tablero y creando una nueva base de datos haciendo clic en ‘Agregar mis propios datos’ . Déle un nombre de base de datos y un nombre de tabla y termine de crear una nueva base de datos. 

Para este ejemplo, he creado una base de datos llamada ‘Ejemplo’ y una tabla llamada ‘Tabla de muestra’.

El siguiente código de python se vincula a su base de datos MongoDB Atlas usando pymongo

Nota: instale las siguientes bibliotecas para ejecutar la API del matraz: matraz, pymongo, dnspython, matraz_cors

from flask import Flask
from flask_cors import CORS
import pymongo
  
# Replace your URL here. Don't forget to replace the password.
connection_url = 'mongodb+srv://admin:<password>@cluster0-pm5vp.mongodb.net/test?retryWrites=true&w=majority'
app = Flask(__name__)
client = pymongo.MongoClient(connection_url)
  
# Database
Database = client.get_database('Example')
# Table
SampleTable = Database.SampleTable
  
if __name__ == '__main__':
    app.run(debug=True)

Esto iniciará un servidor matraz en su http://localhost/5000 que se conectará a su base de datos MongoDB Atlas. Al ejecutarse con éxito, la consola se verá así: 

Ahora puedes crear rutas en la API y definir funciones para interactuar con la base de datos. A continuación se muestra un ejemplo de cómo mapear rutas y usarlas para recibir valores e interactuar con la base de datos.

  • route(ruta, métodos): se utiliza para definir la ruta a través de la cual puede llamar a las funciones correspondientes. ‘<SomeData>’ se usa para extraer valores de la ruta. 
    Por ejemplo, para la función de inserción a continuación, la ruta contiene <nombre>, <id>, lo que significa que el valor en la ruta después de ‘insertar uno/’ se almacenará en nombre y el valor posterior se almacenará en identificación. métodos se utiliza para definir el tipo de métodos que aceptará la función. Puedes leer sobre desde aquí.
     
  • jsonify (objeto): se usa para crear un objeto JSON a partir del objeto pasado.
     
  • insert_one(object): se utiliza para insertar el objeto pasado en la colección desde la que se llama.
     
  • find_one(object): se utiliza para encontrar el objeto en la base de datos que coincide con el objeto pasado como clave en los parámetros. Devuelve el documento completo como un objeto. Este método devuelve el primer objeto que coincide con los valores clave pasados.
     
  • find(object): se utiliza para encontrar todos los objetos que coincidan con los valores clave pasados. 
     
  • update_one(objeto): se usa para actualizar el valor de algún objeto en la base de datos que coincida con ciertos valores clave pasados.
from flask import Flask, jsonify, request
from flask_cors import CORS
import pymongo
  
connection_url = 'mongodb+srv://admin:samplearticle@cluster0-pm5vp.mongodb.net/test?retryWrites=true&w=majority'
app = Flask(__name__)
client = pymongo.MongoClient(connection_url)
  
# Database
Database = client.get_database('Example')
# Table
SampleTable = Database.SampleTable
  
# To insert a single document into the database,
# insert_one() function is used
@app.route('/insert-one/<name>/<id>/', methods=['GET'])
def insertOne(name, id):
    queryObject = {
        'Name': name,
        'ID': id
    }
    query = SampleTable.insert_one(queryObject)
    return "Query inserted...!!!"
  
# To find the first document that matches a defined query,
# find_one function is used and the query to match is passed
# as an argument.
@app.route('/find-one/<argument>/<value>/', methods=['GET'])
def findOne(argument, value):
    queryObject = {argument: value}
    query = SampleTable.find_one(queryObject)
    query.pop('_id')
    return jsonify(query)
  
# To find all the entries/documents in a table/collection,
# find() function is used. If you want to find all the documents
# that matches a certain query, you can pass a queryObject as an
# argument.
@app.route('/find/', methods=['GET'])
def findAll():
    query = SampleTable.find()
    output = {}
    i = 0
    for x in query:
        output[i] = x
        output[i].pop('_id')
        i += 1
    return jsonify(output)
  
  
# To update a document in a collection, update_one()
# function is used. The queryObject to find the document is passed as
# the first argument, the corresponding updateObject is passed as the
# second argument under the '$set' index.
@app.route('/update/<key>/<value>/<element>/<updateValue>/', methods=['GET'])
def update(key, value, element, updateValue):
    queryObject = {key: value}
    updateObject = {element: updateValue}
    query = SampleTable.update_one(queryObject, {'$set': updateObject})
    if query.acknowledged:
        return "Update Successful"
    else:
        return "Update Unsuccessful"
  
  
if __name__ == '__main__':
    app.run(debug=True)

Salida: el código anterior responde de manera diferente para diferentes requests de URL.

  • solicitud insert-one: http://127.0.0.1:5000/insert-one/chitrank/1/
    Esto inserta el siguiente objeto en la colección SampleTable y devuelve ‘Consulta insertada…!!!’ después de insertar el documento.
                 { 
    estilo = «color: rgb (80,80,80); color de fondo: rgb (255,255,255);»> ‘Nombre’: ‘chitrank’,
                        ‘ID’: ‘1’,
                 }

  • solicitud de encontrar uno: http://127.0.0.1:5000/find-one/Name/chitrank/
    Esta solicitud devolverá un objeto que coincide con los valores pasados ​​en la URL. El objeto devuelto se mostrará en la ventana del navegador.

  • solicitud de búsqueda: http://127.0.0.1:5000/find/
    Esta solicitud devolverá todos los objetos en la tabla de llamadas. Los objetos devueltos se mostrarán en la ventana del navegador.

  • solicitud de actualización: http://127.0.0.1:5000/update/ID/1/Name/GeeksForGeeks/
    Esta solicitud actualizará el objeto que coincide con los dos primeros parámetros con los dos últimos valores. Volverá a ‘Actualizado con éxito’ en la actualización exitosa
     

 Estas son algunas operaciones básicas a las que me he referido aquí. Estos son más que suficientes para administrar una base de datos. MongoDB proporciona una amplia gama de operaciones sobre las que puede leer en la documentación oficial de MongoDB

Publicación traducida automáticamente

Artículo escrito por chitrankmishra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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