Closed marcunu closed 3 years ago
Holaaaaa Jacoboooo 🙋♀️, vamos con el proyecto de crear una API!! 🔥🔥
"Peazo" de readme te has marcado Jacobo, esta perfecto. Has explicado cuales son los objetivos del repo, la información que encontrarás y como esta organizada, los pasos que has seguido en el proceso de creación de tu API, el esquema de tu BBDD, algunos ejemplos de request
... Enhorabuena! Trabajazo 👏🏽👏🏽
Solo por ponerme un poco tiquismiquis y, cuando listas las librerías que has usado en tu proyecto, si ya pones los links a la documentación oficial, lo rematas!!
Muy buen trabajo en esta parte también Jacobo, tienes un repo que esta super bien estructurado! Solo un par de detalles:
Evitar archivos con el nombre de functions
intenta que sea algo más específico.
Genial no se te ha pasado ningún archivo rarinchi fuera del .gitignore
y todas las funciones con sus docstrings! 👏🏽
Vamos con la parte del código!
En el fichero functions.py
tienes un par de funciones, una para meter un nuevo director y otra para temporadas:
def input_director():
dir_id = input("Introduce an id for the director: ")
while len(dir_id)>6:
print("Director_id must be 6 character or less.")
input("Please, try again: ")
break
nombre = input("Introduce director´s name: ")
episodes = input("Introduce how many episodes the director has made: ")
nuevo_dir = {
'Director_id':{dir_id},
'Name':{nombre},
'Episodes':episodes
}
url_dir = "http://localhost:5000/new_director"
return requests.post(url_dir, data = nuevo_dir)
Chequeas si id
del director tiene 6 caracteres o menos. Con esto un par de detalles:
Trabajar con los id
puede resultar algo confuso. El usuario no tiene por qué saber si el nuevo id existe o no.
Por otro lado, no tendría más sentido chequear si el director/temporada/episodio que está tratando de introducir el usuario ya existe en tu BBDD para evitar la duplicidad de los datos.
# Por ejemplo, antes de insertar un nuevo director
def inserta_dir(dir_id, nombre, num_epi):
#primero chequeamos si el director que queremos insertar ya esta en nuestra base de datos
query = f"""
SELECT Name, Director_id, Episodes
FROM directors
WHERE Director_id = "{dir_id}"
"""
data = pd.read_sql_query(query, engine)
if len(data) =>1: # si la query nos devuelve algo, le decimos que ya tenemos esa info
return "Sorry the director is in our BBDD"
else: # si no la tenemos, la introducimos en nuestra BBDD
engine.execute(f"""
INSERT INTO directors (Director_id, Name, Episodes) VALUES
('{dir_id}','{nombre}',{num_epi});
"""
Te dejo por aquí algunas ideas que se me han ido ocurriendo según iba leyendo tu código(pero vamos, que son sugerencias):
Puedes crear un endpoint que sea para "actualizar" o "modificar" algún dato que ya exista en un API, dando la opción de "corregir" posibles erratas.
Entre los métodos POST
, no sé si lo estoy entendiendo bien pero... ¿el usuario tiene que meter el sentimental analysis? Tiene el usuario que saber el análisis de sentimientos de los personajes/capítulos/temporadas...Algunas ideas que se me ocurren para evitar que el usuario meta un dato que tal vez ni conozca:
Crearte una nueva tabla en tu BBDD tengas el análisis de sentimientos.
Por otro lado, puedes crearte un endpoint nuevo donde generes devuelvas los resultados del análisis de sentimientos.
Tienes un gran trabajo de visualización de tu BBDD, todo esto lo puedes meter en un endpoint donde por ejemplo puedas hacer un pequeño "recap" de los datos que tienes. Y si ya pones una frasecita que expliqué lo que el usuario esta viendo estaría perfecto!
En cualquier caso Jacobo, te has descargado un dataset , lo has incorparado en una base de datos de SQL, te has creado múltiples enpoints (tanto GET como POST) y por último has hecho una representación gráfica de tus datos. Enhorabuena Jacobo! 🔥🔥🔥
https://github.com/marcunu/API_sent.git