A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Operaciones CRUD con Python y Pymongo

19/26
Recursos

Aportes 116

Preguntas 17

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Hasta aqu铆 llegu茅. No pude con la configuraci贸n anterior adem谩s no s茅 como inici贸 ac谩 con un proyecto ya listo.

Siento que el profesor no esta ense帽ando el porque de las cosas, me da la impresi贸n de que solo se trata de una demostraci贸n de su conocimiento, en v铆deos anteriores dice 鈥渘o se preocupe por el c贸digo despu茅s lo entender谩n鈥 y eso no me deja satisfecho, en cada v铆deo que avanzo esa bola de nieve de dudas y vac铆os se hace cada vez mas grande.

En Windows no es Export, es SET, es decir:

export FLASK_APP=platzi-api
export FLASK_ENV=development
export PLATZI_DB_URI=鈥淢ONGO-URI鈥

por

set FLASK_APP=platzi-api
set FLASK_ENV=development
set PLATZI_DB_URI=mongodb+srv://TuUsuario:[email protected]

Nota: Sin 鈥溾 (comillas) , ni <>

Nada. Saltar leccion. No puedo perder mas tiempo intentando configurar esto. Todo esto se hace Con Javascript y Mongoose (el modulo para conectar Mongodb con Javascript) en minutos. Siguiente.

Me choque con esta clase鈥o se nada de Python 馃槙

El curso iba muy bien hasta la parte de montar el proyecto de la API, ese paso previo a este video est谩 muy mal hecho y parece que no soy el 煤nico que ha tenido montando esa API, seria bueno que pudiesen hacer la actualizaci贸n de ese paso en espec铆fico para poder continuar con el curso.

yo ten铆a el siguiente error al momento de hacer operaciones con postman:
pymongo.errors.ConfigurationError: None of DNS query names exist:

lo solucion茅 cambiando un poquito la funci贸n get_db() que est谩 en el archivo db.py

y quedo asi la cosa

def get_db():
    #platzi_db = current_app.config['PLATZI_DB_URI']
    client = MongoClient('mongodb+srv://tuUsuario:tuContrase帽[email protected]')
    return client.platzi

cambian 鈥榗urso-de-platzi鈥 por como le hayan puesto en su cluster

C贸digo de la operaci贸n actualizar carrera:

return str(db.carreras.update_one({'_id': ObjectId(carrera['_id'])}, {'$set': {'nombre': carrera['nombre'], 'descripcion': carrera['descripcion']}}).modified_count)

La informaci贸n de la configuraci贸n para el proyecto en Windows est谩 demasiado b谩sica para si vienen de cero como yo llegu茅, en cualquier caso, les dejo enlaces donde despu茅s de mucho pude configurar y en apoyo con la explicacion anterior:

  • Para usar el comando conda hay que agregarla en el PATH para poder usarlo, el directorio a agregar si se instal贸 por defecto es: C:\Users\NOMBRE_USER\Anaconda3\condabin

  • Descargas Python en Windows y permite agregar a PATH para poder usar el comando 鈥減ip鈥.
    _https://tutorial.recursospython.com/descarga-e-instalacion/ _

  • Si no alcanzan a ver el comando para configurar el proyectom como yo, es: pip install -r requirements.txt

  • Si les da un error igual a este: pymongo.errors.ConfigurationError: None of DNS query names exist la URI de conexi贸n a Mongo est谩 mal escrita, para encontrarla de manera segura pueden ir a su cluster (https://cloud.mongodb.com) y en CONNECT seleccionen la segunda opci贸n (Connect Your Application) y les arrojar谩 la cadena de conexi贸n, solo hay que reemplazar la contrase帽a y la BD a la que se conectar谩. En mi caso algo similar a esto:
    mongodb+srv://platzi:[email protected]/BD?retryWrites=true

  • Si persiste el error al colocar la URI en el PATH, puede ser reemplazada directamente en el archivo db.py en la parte donde se crea el cliente.

Cualquier detalle, con confianza pueden preguntarme 馃槃

*no te preocupes mucho en implementar estos m茅todos o si no entiendes por completo el c贸digo, recuerda que aqu铆 est谩n utilizando el driver de python pero bien pudieras utilizar otro en el lenguaje que m谩s c贸modo sea para ti (C, C++11, C#, Go, Java, Node.js, Perl, PHP, Python, Motor (Python async), Ruby, Mongoid (Ruby ODM), Scala) 馃お

recuerda que este curso es sobre mongodb

p.d. desconozco python y me di贸 error el c贸digo por querer devolver el objeto (documento) completo en el m茅todo crear_carrera, en vez de s贸lo el id insertado

return db.carreras.insert_one(json)

en vez de

return str(db.carreras.insert_one(json).inserted_id)

Hola, no logro correr el flask run. Tendrian que agregar una clase en video de estas configuraciones, para gente que no trabaja con Python no es trivial lo que esta en el documento anterior.

Hasta este punto Ibamos bien, no se si sea necesario tomar curso de Python o algo mas, pero me cuesta trabajo seguir la clase. 驴Qu茅 ruta de aprendizaje sugieren?.

no puedo insertar registros en Postman me aparece el siguiente erro 鈥500 INTERNAL SERVER ERROR鈥.
Nota: al ejecutar flask run e ir a la direcci贸n http://127.0.0.1:5000/ aparece 鈥淣ot Found鈥

En mi caso estoy utilizando Windows 10
Una vez que hayan instalado anaconda.

  1. Abrimos la terminal de anaconda, la buscamos con el nombre de 鈥淎naconda Prompt鈥
  2. Clonamos el repositorio: git clone https://github.com/AERC18/platzi-mongo.git
  3. Ingresamos a la carpeta: cd platzi-mongo
  4. Crear un nuevo ambiente: conda create --name platzi-mongo
  5. Activar el ambiente: conda activate platzi-mongo
  6. Instalar dependencias: conda install --file requirements.txt
  7. Ingresar las variables necesarias para ejecutar el proyecto:
    set FLASK_APP=platzi-api
    set FLASK_ENV=development
    set PLATZI_DB_URI=鈥渕ongodb+srv://platzi-admin:[email protected]
  8. Corremos el servidor: flask run

Al momento de realizar la primera petici贸n, crear carrera, en postman, me arroj贸 el siguiente error:

pymongo.errors.OperationFailure: user is not allowed to do action [insert] on // Werkzeug Debugger

Una soluci贸n, que me funcion贸, fue cambiar la variable PLATZI_DB_URI de:

export PLATZI_DB_URI="mongodb+srv://curso-platzi-fzkkm.mongodb.net"

a

export PLATZI_DB_URI="mongodb+srv://<user>:<password>@curso-platzi-fzkkm.mongodb.net"

Obviamente cambiando los valores <user>, <password> y curso-platzi-fzkkm.mongodb.net, por los que ustedes crearon respectivamente.

El curso de nodejs de Carlos Hernandez en platzi da una introduccion un poco mas didactica a mongo utilizando moongose para la conexion鈥
.
https://platzi.com/clases/backend-js/

La verdad no esta nada claro el proceso de este curso, pienso que se salta muchos pasos, se presentan errores por no tener una gu铆a clara del proceso, deja mucho que desear hasta el momento

ModuleNotFoundError: No module named 鈥榖son鈥 alguien sabe a que se debe esto?

solo queria comentar que me pareci贸 un poco dif铆cil el hacer la conexi贸n con el servidor me sigue dando error, tanto as铆 que contin煤e simplemente luego de todo el proceso aun me da un error y no puedo conectar y perd铆 mucho tiempo , tal vez sea por que no conozco python.

Hasta el paso anterior me he perdido el curso iba bien pero al meter python se necesita un conocimiento previo y los pasos para configurar de la clase anterior no son claros, en mi opini贸n esta muy mal manejado, dicho viniendo desde la carrera de bases de datos que no hay introducci贸n a este tema en ning煤n curso anterior

It works !!!, pero vaya que costo trabajo,

  1. Sin instalar anaconda ejecutar los pasos descritos
  2. En postman no dejan claro que hacer, su gif es muy escueto, pero con la siguiente imagen imagen en los recuadros rojos son los pasos
  3. Me apareci贸 el siguiente error:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
麓麓麓
en stackoverflow encontre la soluci贸n, esta linea de c贸digo va as铆:

client = MongoClient(platzi_db, ssl=True,ssl_cert_reqs=鈥楥ERT_NONE鈥)
麓麓麓
y reto logrado, ufff, respiro de alivio a las 2am, saludos 馃槂

Si les aparece un error con postman al no dejar ingresar el link con los request porque no es version 2

hagan el proceso normal de configuraci贸n del ambiente virtual y las dependencias y cuando se encuentren en el punto de hacer las peticiones mediante la API, crear por separado los request, solo es colocar la url y por ejemplo en crear carreras, elegir post, en body, ubicarse en raw, escoger formato json y escribir el array, espero que les sirva de ayuda

hasta aqui llegue yo tambien, si estuviese en mi poder impediria que sigan 鈥渆nse帽ando鈥 pero no puedo asi que seguiras llenando de frustracion a los demas que vean este curso y como yo y varios no logren pasar de la configuracion solo por que te parecio mas didactico dejar un manual escrito con imagenes que no se ven bien y consejos que no funcionan 馃槂

Bueno, primer curso con el que no estoy satisfecho. Nada pod铆a ser tan perfecto en Platzi. Yo lo dejo en este punto y buscar茅 aprender MongoDB con otras opciones.

Para evitar la fatiga:

def crear_carrera(json):
return str(db.carreras.insert_one(json).inserted_id)

def consultar_carrera_por_id(carrera_id):
return dumps(db.carreras.find_one({鈥檁id鈥: ObjectId(carrera_id)}))

def actualizar_carrera(carrera):
# Esta funcion solamente actualiza nombre y descripcion de la carrera
return str(db.carreras.update_one({鈥檁id鈥: ObjectId(carrera[鈥檁id鈥橾)}, {鈥$set鈥: {鈥榥ombre鈥: carrera[鈥榥ombre鈥橾, 鈥榙escripcion鈥: carrera[鈥榙escripcion鈥橾 }} ).modified_count)

def borrar_carrera_por_id(carrera_id):
return str(db.carreras.delete_one({鈥檁id鈥: ObjectId(carrera_id)}))

Es importante recalcar que el PostMan ya viene con una colecci贸n de las rutas y los objetos a actualizar (Update). Pero nosotros debemos cambiar el _id por el que autogenero nuestra base de datos. As铆 que pendiente al momento de Actualizar Carreras copien el id de la carrera de SU base de datos en el body (Objeto).

No me pasa que para que este c贸digo funcione literalmente reinicie mi Pc y funcion贸 馃槄

En el metodo crear_carrera el objeto insertOne ya no es compatible con el driver mas actual. El metodo actual es solo insert. Les dejo un ejemplo del codigo:

def crear_carrera(json):
    return str(db.carreras.insert(json).inserted_id) #insertOne is only available in the 3.0b driver.

Para los de windows, yo me equivoque bastante pero despues pude hacerlo bien, tienen que colocar el PLATZI_DB_URI sin comillas y su usuario y contrase帽a mas el url despues del @ que da mongoDB

set PLATZI_DB_URI=mongodb+srv://platzi-admin:[email protected]

Pues yo no pase de aqui, me sale este error una y otra vez, estoy en la carpeta correcta

flask.cli.NoAppException: Could not import "platzi-api.platzi-api".

Al inicio estaba decepcionado por el hecho de que el instructor infiri贸 que sabemos usar las herramientas de python as铆 como su sintaxis b谩sica; la verdad que me tom贸 un buen de tiempo configurar las herramientas mencionadas antes. Pero es resultado es grandioso, con un poco de esfuerzo y algo de investigaci贸n extra pude terminar esta clase.

Abandono el curso. Completamente inoperable. Veo personas de hace 6 meses, hace 1 a帽o que no tienen respuesta, gente que se qued贸 atascada y no pudo continuar.

Muchos te animan a seguir, pero si as铆 es el inicio del curso, no quiero imaginar el resto.

Me retiro y buscar茅 un curso de mongo en alg煤n otro lado.

que mala onda no entiendo porque dice mongodb y metemos python :鈥(

cuando inserto una nueva carrera aparece esto:
pymongo.errors.InvalidURI

pymongo.errors.InvalidURI: Invalid URI scheme: URI must begin with 鈥榤ongodb://鈥 or 鈥榤ongodb+srv://鈥

驴Qu茅 IDE est谩 usando el profesor?

Que poco did谩ctico

Bueno, no tengo idea de Python as铆 que tuve varios errores los cuales al buscar en google no eran tan dif铆ciles de solucionar.
El primero fue el error del comando 鈥榗onda鈥 que no funcionaba en cmd despu茅s de haber instalado anaconda e incluso reiniciado el equipo, creo que se cambia algo para que funcione por defecto pero a mi me funcion贸 al abrir 鈥渁naconda Navigator鈥 que es la aplicaci贸n que se instala en windows al instalar anaconda, desde ah铆 solo tuve que ir a la secci贸n enviroments > base(root) y en el signo 鈥減lay鈥 open terminal, desde ah铆 si funcionaba el comando conda y pude seguir con la configuraci贸n.
El segundo error fue 鈥渘o module named bson鈥 el cual solucione instalando en la misma consola pip install pymongo.
y el ultimo error fue "the dnspython module must be installed to use mongodb+srv // uris"
El cual se soluciona en la consola instalando dnspython con:
pip install dnspython.
Cabe destacar que cada vez que hacia un cambio, hacia correr nuevamente el proyecto con flask run para probar.
Espero le ayude a alguien o a varios.

En realidad he tratado de todo para hcer funciona ese api rest , y aun no lo logro, alguien puede indicarme el proceso teniendo python en la version 3.7

No conozco nada de Python as铆 que trabaj茅 en Java! Pueden conseguir el repo ac谩: https://github.com/ramonparisg/mongodb-test

馃槂

Compa帽eros, asegurense de que tienen las variables de entorno requeridas por el proyecto configuradas, la mayor铆a de los problemas de configuraci贸n se deben a eso,

Al instalar Anaconda, les muestra una opci贸n para agregar sus variables de entorno al PATH del sistema operativo, tambi茅n recomiendo usar como terminal git bash o cmder si estan en windows.

Si no les funciona 鈥渆xport鈥 para setear las variables de entorno usen 鈥渟et鈥. A la hora poner la Uri de sus clusters de MongoDB atlas, ponganla sin comillas.

muy basico el ejemplo

En esta clase se omiten muchas cosas.

Me costo mucho esta clase y la anterior porque hay algunas cosas que omite el profesor.

Este curso esta muy raro, falta contexto, las instrucciones para instalar no me funcionan.
Ojala que actualicen pronto

siento este v铆deo innecesario si quisiera aprender python estar铆a dicho curso.

Buenas tardes amigos, ustedes igual tienen el mismo error? aun no encuentro como resolverlo

al parecer no encuentra la conexion si alguien me podria ayudar a explicarlo

Saludos

Quiero compartir una lista de errores comunes en la instalaci贸n y configuraci贸n de dependencias debido a que veo que a mucha gente se le dificulto tanto como a mi:

鈥渘o module named bson鈥:
Este se puede solucionar instalando

-> pip install pymongo

debido a que el package de pymongo instala gridfs y bson

puedes instalar:

-> pip install bson

pero es probable que despu茅s tengas el error:

鈥渘o module named bson.json_util鈥:
Esto se debe un conflicto entre la instalaci贸n entre el bson y pymongo una soluci贸n posible es:

pip uninstall bson
pip uninstall pymongo
pip install pymongo

the dnspython module must be installed to use mongodb+srv // uris:

La soluci贸n aportada por el usuario @Jcfaundez fue usar pip install dnspython

https://platzi.com/comentario/659545/

pymongo.errors.ConfigurationError: None of DNS query names exist:

el usuario @cems aporto esta soluci贸n https://platzi.com/comentario/569030/

pymongo.errors.ConfigurationError: None of DNS query names exist

Esto significa que la URI de Mongo esta mal escrita, dejo el enlace a un comentario del usuario @JavierSLX donde explica como verla en el MongoDB Atlas.

https://platzi.com/comentario/576505/

404 Nof Found:

Prueben dirigirse al enlace http://127.0.0.1:5000/carreras

Como recomendaci贸n general instaria a los que somos usuarios de Windows 10 a descargar la consola de Ubuntu desde la Microsof store como ense帽an en el curso de Introducci贸n a la termianl de comandos aqui:
https://platzi.com/clases/1748-terminal/24394-windows-subsystem-for-linux-wsl-como-acceder-a-la-/

De verdad que es mucho m谩s amigable que trabajar directamente con las terminales de windows.


Dejo otros enlaces que utilice en mi odisea, espero que el hecho de que algunos esten en ingl茅s no sea una barrera:

https://docs.github.com/es/github/creating-cloning-and-archiving-repositories/cloning-a-repository

https://gist.github.com/kauffmanes/5e74916617f9993bc3479f401dfec7da

https://stackoverflow.com/questions/35254975/import-error-no-module-named-bson

https://github.com/py-bson/bson/issues/19

usar
import logging

dentro de los m茅todos poner logueo para ver qu茅 pasa.

usar try
def actualizar_carrera(carrera):
# Esta funcion solamente actualiza nombre y descripcion de la carrera
try:
logging.warning(鈥榚stamos en actualizar carrera鈥)
logging.warning(carrera)
logging.warning(carrera[鈥檁id鈥橾)
logging.warning(carrera[鈥榥ombre鈥橾)
logging.warning(carrera[鈥榙escripcion鈥橾)
return str(db.carreras.update_one({鈥檁id鈥: ObjectId(carrera[鈥檁id鈥橾)}, {鈥$set鈥: {鈥榥ombre鈥:carrera[鈥榥ombre鈥橾,鈥榙escripcion鈥:carrera[鈥榙escripcion鈥橾}}).modified_count);
except Exception as e:
logging.error(e)

Me ocurrieron varias problemas hasta llegar con la solucion en windows.
Problemas:

  • Errores al enviar el post, codigo 500 al enviar mi POST
  • No encontraba el directorio de platzi-api
    Cambios:
  • Crear el venv dentro de la carpeta platzi-mongo
  • En mi caso estoy utilizando la URI para compass pues cuando quiero setearla desde cmd con la URI de application me arroja un error con 鈥&w=majority鈥 esta parte final de la URI.
  • Adem谩s explicitamente estoy declarando esta URI en el c贸digo. y es el mismo URI declarado en la variable de entorno
  • creo que tambi茅n podr铆a funcionar no polerle comilla a la variable de entorno de la URI
# Este m茅todo se encarga de configurar la conexi贸n con la base de datos
def get_db():
    platzi_db = 'mongodb+srv://platzi-admin:<password>@curzo-platzi.nsb4f.mongodb.net/test'
    client = MongoClient(platzi_db)
    return client.platzi

la del curso

def get_db():
    platzi_db = current_app.config['PLATZI_DB_URI']
    client = MongoClient(platzi_db)
    return client.platzi

Hasta aqui llego, de un momento apenas vemos comandos y luego ya es un proyecto, es la primera vez que un curso de platzi me deja insatisfecho

隆No conozco nada de Python, pero todo genial en el curso hasta ahora!

El curso no est谩 tan bien estructurado, creo que debe haber una actualizaci贸n del curso. Si sabes de bases de datos, lo entiendes, pero si no, te pierdes. No es un curso basico creo yo.

馃槥

Para entender este proyecto debemos leer detenidamente el Readme

Sinceramente no me conecto de forma remota al cluster de Mongo, entonces intente de forma local y funciono! Dejo las configuraciones para trabajar en local

def get_db():
    MONGO_URI = "mongodb://localhost:27017/"
    client = MongoClient(MONGO_URI)
    db = client['test']
    return db

def crear_carrera(json):
    collection = db['carreras']
    return str(collection.insert_one(json).inserted_id)

Para quienes hayan configurado mongo dentro de un contenedor en docker utilicen la siguiente cadena de conexi贸n

export PLATZI_DB_URI=mongodb://<user>:<pass>@localhost:27017 

Entendido

Python muy lindo y todo pero lo har茅 con PHP por reveld铆a jajjaja

Recuerden poner el set PLATZI_DB_URI=鈥渢u _url鈥 sin las comillas, ese error me llev贸 un buen rato.

Los m茅todos insert_one(), find_one(), etc que aunque se parecen a los de la shell de comandos de MongoDB, realmente hacen parte de la librer铆a pymongo que fue instalada en los requirements.txt.

Es imprescindible instalar el Postman Agent https://blog.postman.com/introducing-the-postman-agent-send-api-requests-from-your-browser-without-limits/.
La aplicaci贸n (que es diferente del Agent) no es necesario instalarla, todo se puede hacer desde el navegador.

Para poder importar la colecci贸n de Postman con las m谩s recientes versiones de la app, hay que convertir el archivo a v2:

$ curl https://www.postman.com/collections/ffcbfb5c8d5cd2dc52d2 -o postman_collection_v1.json

$ sudo npm install -g postman-collection-transformer

$ postman-collection-transformer convert -i "postman_collection_v1.json" -o "postman_collection_v2.json" -j 1.0.0 -p 2.0.0 -P

Luego se importa el archivo 鈥減ostman_collection_v2.json鈥 mediante la opci贸n 鈥淔ile > Import > File > Upload files鈥.

Referencia:
https://learning.postman.com/docs/getting-started/importing-and-exporting-data/#converting-postman-collections-from-v1-to-v2

Pude resolver el problema de configuraci贸n con el siguiente export:
export PLATZI_DB_URI="mongodb+srv://tuUsuario:tuContrase帽[email protected]/nombreBaseDatos

luego :

flask run

ACA HAY UNA RESPUESTA ACTUALIZADA 2021, probablemente actualizaciones de mongodb han generado problemas al proecto de este curso, lo que yo hice fue ir a mi cuneta de mongodb atlas, click en el boton connect del cluster que quiero, ahi poner connect from application.

Fijense que ahi hay que indicar en driver el lenguaje y la version del lenguaje que usas, yo ocupo python 3.8 por lo que en el cmd de windows puse python --version para estar seguro.

Si pones tu driver y version te arroja un codigo, yo borre el codigo de platzi y copi茅 ese, me funciono. Es por un tema de actualizaci贸n.

Para iniciar el entorno virtual despues de ser creado, es decir que cierres y vuelvas a ingresar usar

avenv

No entiendo porqu茅 estos cursos siguen 鈥 copiando c贸digo sin contexto, uno entra a un curso de Mongo y termina con Phyton? hagan uno fundamental y ya luego especializan por lenguaje 鈥 dos a帽os tiene este curso y es un trend que se sigue viendo en 2021

no me funciona
como hago para exportar las variables ??
a donde va esto??

export FLASK_APP=platzi-api

export FLASK_ENV=development

export PLATZI_DB_URI=鈥淢ONGO-URI鈥

Bueno, aqui seguimos. Pero al tratar de actualizar se me modifican 0 elementos

def actualizar_carrera(carrera):
    # Esta funcion solamente actualiza nombre y descripcion de la carrera
    return str(db.carreras.update_one({'_id' : ObjectId(carrera['_id'])}, {'$set': {'nombre' : carrera['nombre'], 'descripcion': carrera['descripcion']}}).modified_count)```

Todav铆a no he profundizado en Python lo suficiente. Alguien sabe porque se presenta el siguiente error?

SyntaxError

File"/home/fullmetal/Desarrollo/Estudio/mongo/platzi-mongo/platzi-api/db.py", line 7
SyntaxError: Non-ASCII character '\xc3' infile /home/fullmetal/Desarrollo/Estudio/mongo/platzi-mongo/platzi-api/db.py online 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Traceback (most recent call last)

    File"/home/fullmetal/anaconda2/lib/python2.7/site-packages/flask/cli.py", line 76, in find_best_app

    app = call_factory(script_info, app_factory)

    File"/home/fullmetal/anaconda2/lib/python2.7/site-packages/flask/cli.py", line 116, in call_factory

    return app_factory()

    File"/home/fullmetal/Desarrollo/Estudio/mongo/platzi-mongo/platzi-api/__init__.py", line 24, in create_app

    from . import carreras,cursos

    File"/home/fullmetal/Desarrollo/Estudio/mongo/platzi-mongo/platzi-api/carreras.py", line 2, in <module>

    from . import db

File"/home/fullmetal/Desarrollo/Estudio/mongo/platzi-mongo/platzi-api/db.py", line 7
SyntaxError: Non-ASCII character '\xc3' infile /home/fullmetal/Desarrollo/Estudio/mongo/platzi-mongo/platzi-api/db.py online 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error. 

Saludos cordiales con todos estimados, tengo una consulta ejecuto la creacci贸n de la carrera todo sale bien, se ve reflejado en el cluster el registro y tambi茅n se refleja en el compass pero si lo quiero verificar en el shell de mongo no se ve reflejado la nueva base creada, alguna sugerencia de lo que sucede le quedar铆a agradecido.

Quiero comentar, "Este Curso se llama 鈥淐urso B谩sico de MongoDB鈥, creo que el profe se sale de lo b谩sico de MongoDB y muchos no entienden sobre c贸mo configurar 茅ste proyecto. Sugiero que si es Curso B谩sico, se ense帽e lo Basico.

+2

Excelente

A mi no me funciono la ruta http://127.0.0.1:5000/carreras hasta que creamos un primer registro, con el crear nuesto primer registro automaticamente nos creo la db y el collection de mongo atlas

Las variables de entorno son como enlaces que se le proveen al sistema operativo para que el interprete de comandos nos identifique o reconozca los programas que queremos ejecutar

demore mucho con esta clase porque no se nada de python aun :c

Cuando ejecuto el comando que env铆a el POST, obtengo error de python. TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping.

Cabe aclarar dos hechos:

  • El repositorio Git del proyecto lo estoy usando en la rama master
  • De la clase anterior, el punto 3 del segmento 鈥淚nstalar postman鈥, en el que dice 鈥淎hora es momento de importar la colecci贸n con todos los ejemplos de peticiones REST usados en platzi-mongo para ello copiamos la URL <URL>鈥 no me qued贸 muy claro a qu茅 se refiere con importar la colecci贸n, por lo que no visit茅 el link, vi una estructura JSON, pero no hice nada con el programa postman.

Aqu铆 va el traceback completo:

`--> flask run
 * Serving Flask app "platzi-api" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 209-467-522
127.0.0.1 - - [16/Sep/2019 01:30:41] "POST /carreras HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/kurt/workspace/platzi/platzi-mongo/platzi-api/carreras.py", line 17, in carreras_func
    return jsonify({'_id': db.crear_carrera(request_body)})
  File "/home/kurt/workspace/platzi/platzi-mongo/platzi-api/db.py", line 29, in crear_carrera
    return str(db.carreras.insert_one(json).inserted_id)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/pymongo/collection.py", line 684, in insert_one
    common.validate_is_document_type("document", document)
  File "/home/kurt/workspace/platzi/platzi-mongo/venv/lib/python3.6/site-packages/pymongo/common.py", line 453, in validate_is_document_type
    "collections.MutableMapping" % (option,))
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping

Hice el proyecto desde cero. Utilizando MongoDB localmente. No logro conectar al servicio de Atlas.
Con esto ya logro utilizar los ejemplos de peticiones REST en PostMan

pip install --upgrade pip
pip install flask
pip install pymongo
mkdir platzi-mongo2
cd platzi-mongo2
mkdir platzi-api
cd platzi-api
touch db.py
# agregar codigo al archivo db.py
from flask import Flask
from flask import request
from pymongo import MongoClient
from bson.json_util import dumps
import json

client = MongoClient('localhost:27017')
db = client.platzi

app = Flask(__name__)

@app.route("/")
def hello():
    return "Welcome to Python Flask! platzi-mongo2"

@app.route("/carreras", methods = ['POST'])
def add_contact():
    try:
        data = json.loads(request.data)
        nombre = data['nombre']
        descripcion = data['descripcion']
        if nombre and descripcion:
            status = db.carreras.insert_one(data)
        return dumps({'message' : 'SUCCESS'})
    except Exception as e:
        return dumps({'error' : str(e)})

@app.route("/carreras", methods = ['GET'])
def get_all_contact():
    try:
        contacts = db.carreras.find()
        return dumps(contacts)
    except Exception as e:
        return dumps({'error' : str(e)})
FLASK_APP=db.py flask run

# revisar servicio
http://127.0.0.1:5000/

# listado de carreras
http://127.0.0.1:5000/carreras

en MAC
git clone https://github.com/AERC18/platzi-mongo.git

<h1>navegar hasta el directorio del proyecto</h1>

cd platzi-mongo

<h1>crear un nuevo ambiente</h1>

conda create --name platzi-mongo

<h1>Instalar Flask</h1>

pip install Flask

<h1>activar el ambiente</h1>

conda activate platzi-mongo

<h1>para desactivar el ambiente</h1>

conda deactivate

<h1>para correr proyecto</h1>

export FLASK_APP=platzi-api
export FLASK_ENV=development
export PLATZI_DB_URI=鈥淢ONGO-URI鈥
Flask run

<h1>abrir servicio</h1>

http://localhost:5000

Yo no s茅 de python, pero no tuve problemas en hacer funcionar el proyecto en docker. Pero toca aprender python si o si pronto!

Clase muy interesante y practica de MongoDb. Todo funciono.

La interfaz que est谩 utilizando se llama PyCharm, y el archivo que el est谩 editando es el db.py que se encuentra en la carpeta que hab铆amos clonado en la clase anterior. En mi caso el archivo se encontraba en la ruta C:\Users\user\platzi-mongo\platzi-api

Could not get any response
There was an error connecting to http://127.0.0.1:5000/carreras.
Why this might have happened:
The server couldn鈥檛 send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 鈥楽SL certificate verification鈥 in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General

Pude insertar u documento carrera mas por la shell me salio el siguiente error:

AttributeError: 鈥業nsertOneResult鈥 object has no attribute 鈥榠nsert_id鈥

Solucione el problema de 鈥減ymongo.errors.InvalidURI鈥 con esto:

set PLATZI_DB_URI=mongodb+srv://USER:PASSWORD@CLUSTER.mongodb.net/

驴Alguna forma de importar todas las peticiones en Postman que utiliza el profesor?

En a peticion Delete Postman me indica status 200 Ok, pero miro en la BD y me sigue apareciendo la carrera?

Estoy dudando de seguir con este curso, o irme primero al de Python e incluso Porstman 馃

Me gusta demasiado VSCODE.



En VSCODE se puede abrir la terminal de Windows PowerShell



Creamos la base de datos 鈥 platzi 鈥 con la coleccion 鈥 carreras '



Ingresamos los comandos en la terminal de Windows PowerShell que ofrece VSCODE.

<h1># Instalacion de Python</h1>

python -m pip install -U pip

Link:
https://pip.pypa.io/en/stable/installing/

<h1># Instalacion de los requerimientos</h1>

pip install -r requirements.txt

<h1># Terminal de Windows PowerShell</h1>

$env:FLASK_APP = 鈥減latzi-api鈥

$env:FLASK_ENV = 鈥渄evelopment鈥

$env:PLATZI_DB_URI = 鈥渕ongodb+srv://root:123456@cluster-ahtwp.mongodb.net/platzi?retryWrites=true&w=majority鈥

flask run



Listo, seguir茅 el curso con mi proyecto en django

Un d铆a anterior a esta clase, tenia todo funcionando. Y cuando retom茅 este video, ya el consumo del API desde Postman me generaba TimeOut鈥 no entend铆a la raz贸n, realice nuevamente cada uno de los pasos y segu铆a sin funcionar. Luego record茅 el tema de las IP blancas en el cluster de Mongo Atlas, la renov茅 y problema resuelto.

He seguido todo el procedimiento del documento anterior
pero no puedo hacer arrancar el proyecto.
Espero que las dem谩s clases no sean con python

Ok un par de problemas pero listo

Excelente, gracias

Para tener epostman organizado de la misma manera pueden consultar la siguiente clase:
https://platzi.com/clases/1765-postman/25073-optimizacion-de-environment-de-postman-y-configura/

Bastante engorroso la herramienta, no es nada amigable el usar muchas herramientas para explicar cosas sencillas.
Toda la ma帽ana perdida tratando de configurar.
Recomiendo reformular el curso.

Excelente clase solo deben tener un poco de paciencia y practicar

No puedo creer que lo logre, 5 dias intentando seguir 5 pasos

Definitivamente tienen que mejorar la 鈥渃lase鈥 anterior

lo bueno que tengo un ejemplo de una API con Python 馃槂

Todo iba super bien hasta que empezaron a meter cosas m谩s avanzadas y sin explicar que onda. La verdad deber铆an primero informar de que va el proyecto, que es cada cosa, para que sirve, como la emplearemos y dem谩s informaci贸n que es necesariamente previa.