cristian Lozano

Guardar informació en Python a una base de dades MongoDB

Amb la continuació del nostre projecte Python, afegirem al fitxer servidorpost.py aquest codi, per guardar informació a una base de dades de MongoDB.

#instalem la llibreria MongoDB
from pymongo import MongoClient

# Conexio local MongoDB
cliente = MongoClient("mongodb://localhost:27017/")

# Seleccionem la base de dades
db = cliente["datamongo"]

# Seleciona la coleccio
coleccion = db["coleccio"]

documento = {
        "nombre": "Alberto",
        "edad": 17,
        "ciudad": "Castellbisbal"
}

El fitxer final ha de quedar tal que així:

# Importacio de llibreries
from flask import Flask, request, jsonify
from flask_cors import CORS
from pymongo import MongoClient

# Creacio aplicacio Flask
app = Flask(__name__)
CORS(app)

# Conexio local MongoDB
cliente = MongoClient("mongodb://localhost:27017/")

# Seleccionem la base de dades
db = cliente["datamongo"]

# Seleciona la coleccio
coleccion = db["coleccio"]

documento = {
        "nombre": "Alberto",
        "edad": 17,
        "ciudad": "Castellbisbal"
}

# Definim la ruta per escoltar i acceptar metode POST
@app.route('/dades', methods=['POST'])
def rebre_dades():
    # Llegim el JSON
    dades = request.get_json()
    print("JSON rebut:", dades)

    try:
        # Inserim directament el JSON rebut
        resultat = coleccio.insert_one(dades)

        resposta = {'estat': 'dades guardades', 'id':str(resultat.inserted_id)}

    except Exception as err:
        print("error:", err)
        resposta = {'estat': 'error', 'missatge': str(err)}

    return jsonify(resposta), 200

# Creacio aplicaco Flask
app = Flask(__name__)
CORS(app)

# Instruccio per executar directament aquest fitxer
if __name__ == '__main__':
    app.run(host='localhost', port=5000)