Está en la página 1de 65

UNIVERSIDAD POLITÉCNICA DE SINALOA

PROGRAMA ACADÉMICO DE INGENIERÍA


EN TECNOLOGÍAS DE LA INFORMACIÓN

Tesina

“Python como herramienta para el desarrollo de


aplicaciones funcionales”

Para obtener la acreditación de las estadías profesionales y


contar con los créditos para el grado de Ingeniero en
Tecnologías de la Información.

Autor:
Daniel Esteban Lizárraga Aldaba

Asesor:
Dra. Vanessa Guadalupe Félix Aviña

Asesor OR: Ana Bertha Rodríguez Hinojosa

Mazatlán, Sinaloa a 30 de noviembre del 2021


2
3
Carta de Aceptación de Estadías

4
Agradecimientos

Agradezco a mis padres, por todo el esfuerzo que hicieron para que pudiera
culminar mi carrera universitaria, les doy las gracias por estar conmigo en este largo
trayecto de la carrera, por apoyarme en momentos difíciles y darme siempre las
fuerzas para no rendirme.

A su vez, les doy las gracias a mis compañeros, amigos y profesores, que siempre
buscaron apoyarme de la mejor manera posible, las enseñanzas que me dieron
para esforzarme y dar siempre lo mejor de mí.

Gracias a todos los que estuvieron conmigo, principalmente porque gracias a


ustedes logré cumplir una gran meta, el terminar mi carrera universitaria.

5
Índice Temático

Capítulo 1. Antecedentes y planteamiento del problema …………………………… 10

1.1 Antecedentes ……………………………………………………………….. 11

1.1.1 Localización ………………………………………………………. 12

1.1.2 Objetivos de la Institución ……………………………………….. 12

1.1.3 Misión ……………………………………………………………… 12

1.2 Planteamiento del problema ………………………………………………. 13

1.2.1 Propuesta de investigación ……………………………………… 13

1.2.2 Objetivos de la investigación ……………………………………. 13

1.2.2.1 Objetivo general ………………………………………... 14

1.2.2.2 Objetivos específicos ………………………………….. 14

1.2.3 Preguntas de investigación ……………………………………… 14

1.2.4 Hipótesis …………………………………………………………... 14

1.2.5 Limitaciones y Supuestos ……………………………………….. 15

1.2.6 Relevancia ………………………………………………………… 15

Capítulo 2. Marco Conceptual ………………………………………………………… 16

2.1 Lenguaje de Programación ……………………………………………….. 17

2.1.1 Características de los Lenguajes de Programación ………….. 17

2.1.2 Tipos de lenguajes de programación …………………………… 18

2.1.2.1 Lenguajes de programación de bajo nivel …………… 18

2.1.2.1.1 Lenguaje Máquina …………………………… 18

2.1.2.1.2 Lenguaje Ensamblador ……………………… 19

2.1.2.2 Lenguajes de programación de alto nivel …………… 19

6
2.1.2.2.1 Traductor ……………………………………… 19

2.1.2.2.2 Compilador ……………………………………. 20

2.1.3 Software de Programación ……………………………………… 20

2.2 Python ……………………………………………………………………….. 21

2.2.1 Historia ……………………………………………………………. 22

2.2.2 Versiones …………………………………………………………. 22

2.2.3 Características del Lenguaje …………………………………… 23

2.2.4 Ventajas del uso de Python …………………………………….. 24

2.2.5 Desventajas del uso de Python ………………………………… 25

2.2.6 Tipos de datos ……………………………………………………. 25

2.2.6.1 Tipos numéricos ………………………………………... 26

2.2.6.2 Números complejos ……………………………………. 26

2.2.6.3 Tipo Booleano ………………………………………….. 26

2.2.6.4 Tipo cadena de caracteres ……………………………. 26

2.3 Bases de datos …………………………………………………………….. 27

2.3.1 Tipos de bases de datos ………………………………………… 27

2.3.1.1 Bases de datos relacionales ………………………….. 27

2.3.1.2 Bases de datos orientadas a objetos ………………… 27

2.3.1.3 Bases de datos distribuidas …………………………… 28

2.3.1.4 Almacenes de datos …………………………………… 28

2.3.1.5 Bases de datos NoSQL ……………………………….. 28

2.3.1.6 Bases de datos orientadas a grafos …………………. 28

2.3.1.7 Bases de datos OLTP …………………………………. 28

7
2.3.2 Sistema gestor de base de datos ……………………………… 28

2.4 Framework ………………………………………………………………….. 28

2.4.1 Tipos de frameworks …………………………………………….. 29

2.4.2 Flask ……………………………………………………………….. 30

2.4.2.1 Características Flask ………………………………….. 30

2.5 API REST …………………………………………………………………… 31

2.6 Insomnia …………………………………………………………………….. 32

2.7 GIT …………………………………………………………………………… 32

Capítulo 3 – Desarrollo ………………………………………………………………… 33

3.1 Desarrollo …………………………………………………………………… 34

3.2 Configuración de las herramientas de desarrollo ………………………. 35

3.3 Actividades de desarrollo …………………………………………………. 37

3.3.1 Desarrollar una API REST relacionada a productos en venta con


Python y el framework Flask ………………………………………….. 37

3.3.2 Desarrollar una API REST para tareas con Python, Flask y
MySQL …………………………………………………………………… 47

Capítulo 4 – Resultados y Conclusiones …………………………………………….. 58

4.1 Resultados ………………………………………………………………….. 59

4.2 Conclusiones ……………………………………………………………….. 59

8
Índice de Imágenes

Imagen 1 ………………………………………………………………………………… 11

Imagen 2 ………………………………………………………………………………… 12

Imagen 3 ………………………………………………………………………………… 17

Imagen 4 ………………………………………………………………………………… 18

Imagen 5 ………………………………………………………………………………… 19

Imagen 6 ………………………………………………………………………………… 19

Imagen 7 ………………………………………………………………………………… 20

Imagen 8 ………………………………………………………………………………… 21

Imagen 9 ………………………………………………………………………………... 22

Imagen 10 ………………………………………………………………………………. 27

Imagen 11 ………………………………………………………………………………. 29

Imagen 12 ………………………………………………………………………………. 30

Imagen 13 ………………………………………………………………………………. 31

Imagen 14 ………………………………………………………………………………. 32

Imagen 15 ………………………………………………………………………………. 32

Imagen 16 ………………………………………………………………………………. 35

Imagen 17 ………………………………………………………………………………. 36

Imagen 18 ………………………………………………………………………………. 36

Imagen 19 ………………………………………………………………………………. 38

Imagen 20 ………………………………………………………………………………. 38

Imagen 21 ………………………………………………………………………………. 39

Imagen 22 ………………………………………………………………………………. 39

9
Imagen 23 ………………………………………………………………………………. 40

Imagen 24 ………………………………………………………………………………. 40

Imagen 25 ………………………………………………………………………………. 40

Imagen 26 ………………………………………………………………………………. 41

Imagen 27 ………………………………………………………………………………. 41

Imagen 28 ………………………………………………………………………………. 42

Imagen 29 ………………………………………………………………………………. 42

Imagen 30 ………………………………………………………………………………. 42

Imagen 31 ………………………………………………………………………………. 43

Imagen 32 ………………………………………………………………………………. 43

Imagen 33 ………………………………………………………………………………. 44

Imagen 34 ………………………………………………………………………………. 44

Imagen 35 ………………………………………………………………………………. 45

Imagen 36 ………………………………………………………………………………. 45

Imagen 37 ………………………………………………………………………………. 46

Imagen 38 ………………………………………………………………………………. 46

Imagen 39 ………………………………………………………………………………. 46

Imagen 40 ………………………………………………………………………………. 48

Imagen 41 ………………………………………………………………………………. 48

Imagen 42 ………………………………………………………………………………. 49

Imagen 43 ………………………………………………………………………………. 49

Imagen 44 ………………………………………………………………………………. 50

Imagen 45 ………………………………………………………………………………. 50

10
Imagen 46 ………………………………………………………………………………. 50

Imagen 47 ………………………………………………………………………………. 51

Imagen 48 ………………………………………………………………………………. 51

Imagen 49 ………………………………………………………………………………. 52

Imagen 50 ………………………………………………………………………………. 52

Imagen 51 ………………………………………………………………………………. 52

Imagen 52 ………………………………………………………………………………. 53

Imagen 53 ………………………………………………………………………………. 53

Imagen 54 ………………………………………………………………………………. 53

Imagen 55 ………………………………………………………………………………. 54

Imagen 56 ………………………………………………………………………………. 54

Imagen 57 ………………………………………………………………………………. 55

Imagen 58 ………………………………………………………………………………. 55

Imagen 59 ………………………………………………………………………………. 55

Imagen 60 ………………………………………………………………………………. 56

Imagen 61 ………………………………………………………………………………. 56

Imagen 62 ………………………………………………………………………………. 56

11
CAPÍTULO I

“Antecedentes y planteamiento del problema”

12
1.1 Antecedentes

Develop es una empresa de capacitación tecnológica integral, en el sector de TI,


certificando y capacitando a empresas, profesionistas y universitarios, formando
recursos humanos especializados en alta tecnología para cubrir la demanda del
mercado nacional e internacional.

Logo de la empresa

Imagen 1. Logo de la empresa Develop.

Fuente: https://www.develop.com.mx/

Develop surge con la finalidad de cubrir la creciente necesidad de Talento en


Tecnologías de Información particularmente en Software tanto en Calidad como en
Cantidad. Desde su inicio, y a lo largo de su historia Develop ha buscado la
integración entre Marcas de TI, Gobierno, Iniciativa Privada y Academia como eje
rector de sus soluciones.

A lo largo de su camino Develop se ha hecho presente en más de 500 universidades


en todos los Estados de la República Mexicana. A su vez logra en sus primeros 2
años ser el Proveedor más grande de Sun Microsystems para SAI (Sun Academic
Initiative), tiene el reconocimiento por ser varios años uno de los Centros de
Certificación Prometric y Pearson más Grandes y posteriormente para Oracle el
proveedor más grande de Oracle WDP (WorkForce Development Program) primero
en México, luego en Latinoamérica y finalmente en el Mundo solo compitiendo con
India.

13
1.1.1 Localización

Develop se encuentra ubicada en Presa Santa Teresa 176, Col. Irrigación, Miguel
Hidalgo, 11500 Ciudad de México, CDMX.

Ubicación de Develop

Imagen 2. Ubicación en Google Maps.

Fuente: Google Maps.

1.1.2 Objetivos de la Institución

Apoyar a cubrir el exponencial crecimiento en la necesidad de Talento en el área de


Tecnologías de la Información, ayudando a generar software de calidad, así como
en cantidad.

1.1.3 Misión

Ofrecer e Impartir de manera eficaz, capacitaciones a Empresas, Profesionistas y


Universitarios, enfocadas a lograr certificaciones reconocidas internacionalmente en
el sector de Tecnologías de la Información para cubrir y atender a la demanda del
mercado interno y global.

14
Desarrollar capital humano de clase mundial y alta ética profesional, mediante
procesos sistemáticos coordinados con el Sector Público, Academia y Marcas.

1.2 Planteamiento del Problema

Hoy en día los diversos sistemas y aplicaciones con las que se interactúa para cubrir
ciertas necesidades, son más complejas de lo que deberían, puesto que muchas
veces no se tiene ni idea del cómo funcionan o con qué fin fueron creados.

En la actualidad, las instituciones buscan implementar las mejores tecnologías para


el desarrollo de aplicaciones funcionales, por dicho motivo es de suma importancia
que sus programadores lleven una constante capacitación sobre las diversas
herramientas de desarrollo que se usan actualmente, para con ello generar
aplicaciones de calidad.

De la misma manera una decisión importante cae sobre los programadores de


dichas aplicaciones mencionadas, y es el escoger el lenguaje de programación que
será el predilecto para comenzar con el desarrollo del sistema en cuestión.

Tomando como referencia los cursos proporcionados por el organismo receptor


enfocados en el desarrollo de apps mediante el uso de Python, será necesario la
adquisición de conocimiento, para así generar el pensamiento crítico que se
necesita para crear aplicaciones robustas y funcionales.

1.2.1 Propuesta de Investigación

Se busca encontrar los beneficios que lleva consigo el elegir el lenguaje de


programación Python sobre otros, esto tomando en cuenta las ventajas y facilidad
para aprenderlo y generar código de calidad.

1.2.2 Objetivos de la Investigación

A partir del Planteamiento del problema que se toma en cuenta y de la Propuesta


de Investigación, se toman en cuenta los siguientes objetivos:

15
1.2.2.1 Objetivo General

Entender el lenguaje de programación Python, obteniendo los conocimientos


esenciales para el uso de dicha tecnología, logrando así desarrollar aplicaciones
que permitan poner a prueba los conocimientos que fueron adquiridos durante el
periodo de investigación.

1.2.2.2 Objetivos Específicos

 Concluir los cursos sobre Python

 Manejar los diversos conceptos manejados en las tecnologías a aprender.

 Llevar a cabo actividades a manera de reforzar lo aprendido.

 Obtener los conocimientos fundamentales para comprender y dominar el uso


Python, para así poder desarrollar aplicaciones funcionales y robustas.

1.2.3 Preguntas de Investigación

Mediante un primer análisis, se toman en cuenta las siguientes preguntas de


investigación:

 ¿Por qué utilizar Python como herramienta de desarrollo por encima de otros
lenguajes de programación?

 ¿Qué ventajas trae consigo el lenguaje de programación?

 ¿Qué desventajas presenta Python?

 ¿Python es lo suficientemente robusto para implementar aplicaciones funcionales


a gran escala?

1.2.4 Hipótesis

Teniendo en cuenta la problemática, la propuesta de investigación, objetivos y las


preguntas formuladas, se plantea la siguiente hipótesis:

Una vez estudiado los diversos cursos proporcionados sobre Python, será posible
tener un gran dominio sobre los conceptos esenciales que van relacionados con el

16
correcto uso del lenguaje de programación, de la misma forma será posible aplicar
los conocimientos adquiridos para el futuro desarrollo de aplicaciones.

1.2.5 Limitaciones y Supuestos

En la actualidad, se tienen una gran cantidad de herramientas que permiten el


adquirir diversos conocimientos sobre las distintas tecnologías que se encuentran
teniendo relevancia al día de hoy.

Con el paso del tiempo, las tecnologías van cambiando adaptándose a lo que se
necesita, para seguir ofreciendo un funcionamiento óptimo, por lo que es un
problema el dejar que las diversas herramientas evolucionen sin tener en cuenta
que se deben adquirir los conocimientos necesarios para hacer uso de las mismas
en cuanto a la generación de software de calidad.

1.2.6 Relevancia

Hoy en día, Python es uno de los lenguajes de programación más utilizados, la


relevancia de este lenguaje es debido a su utilidad en aplicaciones que actualmente
tiene un alto valor como la inteligencia artificial y ser usado en ámbitos de gran
crecimiento como la ciencia de datos y big data.

Aprender Python actualmente es aumentar las probabilidades de contratación,


dominarlo es la clave para avanzar con las tecnologías que se manejan hoy en día.

17
CAPÍTULO II

“Marco Conceptual”

18
2.1 Lenguaje de Programación

Imagen 3. Lenguajes más utilizados.

Fuente: PiperLab.

Es un lenguaje formal que, mediante una serie de instrucciones, le permite a un


programador escribir un conjunto de órdenes, acciones consecutivas, datos y
algoritmos para, de esa forma, crear programas que controlen el comportamiento
físico y lógico de una máquina.

Mediante este lenguaje se comunican el programador y la máquina, permitiendo


especificar, de forma precisa, aspectos como:

 Cuáles datos debe operar un software específico;

 Cómo deben ser almacenados o transmitidos esos datos;

 Las acciones que debe tomar el software dependiendo de las circunstancias


variables.

2.1.1 Características de los Lenguajes de Programación

Se deben tener en cuenta 3 aspectos importantes a la hora de querer entender los


lenguajes de programación los cuales son los siguientes:

Sintaxis: es la estructura de una declaración en un lenguaje de programación. Hace


referencia al conjunto de símbolos y reglas para formar sentencias.

Semántica: la semántica trata sobre el significado de la instrucción, es decir, las


reglas para transformar sentencias en instrucciones lógicas.

19
Pragmática: se refiere al modo en que el contexto influye en la forma cómo
interpretamos y analizamos los problemas que queremos resolver con un lenguaje
de programación.

2.1.2 Tipos de Lenguajes de Programación

Se clasifican en dos tipos principales: lenguaje de bajo nivel y de alto nivel.

2.1.2.1 Lenguaje de programación de bajo nivel

 Son lenguajes totalmente orientados a la máquina.

 Este lenguaje sirve de interfaz y crea un vínculo inseparable entre el hardware y


el software.

Además, ejerce un control directo sobre el equipo y su estructura física. Para


aplicarlo adecuadamente es necesario que el programador conozca sólidamente el
hardware. Éste se subdivide en dos tipos:

2.1.2.1.1 Lenguaje máquina

Imagen 4. Lenguaje Máquina.

Fuente: Gnux.

Es el más primitivo de los lenguajes y es una colección de dígitos binarios o bits que
la computadora lee e interpreta y son los únicos idiomas que las computadoras
entienden.

20
2.1.2.1.2 Lenguaje ensamblador

Imagen 5. Lenguaje Ensamblador.

Fuente: Tecnología e Informática.

El lenguaje ensamblador es el primer intento de sustitución del lenguaje de máquina


por uno más cercano al utilizado por los humanos.

Un programa escrito en este lenguaje es almacenado como texto y consiste en una


serie de instrucciones que corresponden al flujo de órdenes ejecutables por un
microprocesador.

2.1.2.2 Lenguaje de programación de alto nivel

Permite escribir códigos mediante idiomas que conocemos y luego, para ser
ejecutados, se traduce al lenguaje de máquina mediante traductores o
compiladores.

2.1.2.2.1Traductor

Imagen 6. Traductor.

Fuente: Programación de Sistemas.

Traducen programas escritos en un lenguaje de programación al lenguaje máquina


de la computadora y a medida que va siendo traducida, se ejecuta.

21
2.1.2.2.2 Compilador

Imagen 7. Traductor.

Fuente: European Valley.

Permite traducir todo un programa de una sola vez, haciendo una ejecución más
rápida y puede almacenarse para usarse luego sin volver a hacer la traducción.

2.1.3 Software de Programación

Editores de código o texto

Al escribir los códigos se auto-completan marcando los errores sintácticos y la


refactorización.

Compiladores

Estos traducen el código ingresado a lenguaje de máquina generando un código


binario ejecutable.

Depuradores

Sirven para optimizar el tiempo de desarrollo mediante el monitoreo de la ejecución


de un programa, el seguimiento a los valores de ciertas variables, las referencias a
objetos en memoria y, por ende, ayuda a corregir errores.

Enlazadores

Este programa toma objetos generados en los primeros pasos del proceso de
compilación y los recursos necesarios de la biblioteca, quita aquellos procesos y
datos que no necesita, y enlaza el código con dicha biblioteca para así aumentar su
tamaño y extensión.

22
Interpretadores o traductores

Carga el código ingresado y traduce las instrucciones para que el programa pueda
ser ejecutado.

IDE

Es una aplicación informática que proporciona una serie de servicios que facilitan la
programación de software, tales como:

 Funciones de autocompletado;

 Un editor de código fuente;

 Gestión de conexiones a bases de datos;

2.2 Python

Python es un lenguaje de scripting independiente de plataforma y orientado a


objetos, preparado para realizar cualquier tipo de programa, desde aplicaciones
Windows a servidores de red o incluso, páginas web. Es un lenguaje interpretado,
lo que significa que no se necesita compilar el código fuente para poder ejecutarlo,
lo que ofrece ventajas como la rapidez de desarrollo e inconvenientes como una
menor velocidad.

Imagen 8. Lenguaje Python.

Fuente: Think big.

23
2.2.1 Historia

Imagen 9. Python Instalación.

Fuente: El Pythonista.

La historia de Python empieza con Guido Van Rossum empezando su desarrollo en


1989 y empezando a implementarlo en febrero de 1991, momento en el que se
publicó la primera versión pública: la 0.9.0.

Esta primera versión de Python ya incluía clases con herencias, manejo de


excepciones, funciones y una de sus características fundamentales: funcionamiento
modular. Esto permitía que fuese un lenguaje mucho más limpio y accesible para la
gente con pocos conocimientos de programación. Una característica que se
mantiene hasta el día de hoy.

Hasta el año 2018, el desarrollo de este popular lenguaje de programación estaba


dirigido personalmente por Van Rossum, pero decidió apartarse y, desde 2019, son
cinco las personas que deciden cómo evoluciona y se desarrolla Python. Un consejo
que se renueva de forma anual.

2.2.2 Versiones

Versión 1.0

Python es un lenguaje de programación que Van Rossum empezó a desarrollar


mientras trabajaba en CWI. Fue este centro de investigación quien liberó, en 1995
la versión 1.2 de Python. A partir de este momento, ya desvinculado de CWI, Van
Rossum hizo aún más accesible el código y para el año 2000, el equipo principal de

24
desarrolladores de Python se cambió a BeOpen.com para formar el equipo de
BeOpen Python Labs.

Versión 2.0

En octubre del año 2000 se publica la segunda versión de Python. Una nueva
versión en la que se incluyó la generación de listas, una de las características más
importantes del lenguaje este lenguaje de programación. Esta nueva versión de
Python también incluyó un nuevo sistema gracias al cual los programadores eran
capaces de hacer referencias cíclicas y, de esta manera, Python podía recolectar
basura dentro del código.

Versión 3.0

La última gran actualización de la historia de Python se produjo en el año 2008 con


el lanzamiento de la versión 3.0, que venía a solucionar los principales fallos en el
diseño de este lenguaje de programación.

Aunque Python mantiene su filosofía en esta última versión, como lenguaje de


programación ha ido acumulando formas nuevas y redundantes de programar un
mismo elemento. De ahí la necesidad de nuevas versiones que eliminen estos
constructores duplicados.

2.2.3 Características del Lenguaje

Propósito general

Se pueden crear todo tipo de programas. No es un lenguaje creado específicamente


para la web, aunque entre sus posibilidades sí se encuentra el desarrollo de
páginas.

Multiplataforma

Hay versiones disponibles de Python en muchos sistemas informáticos distintos.


Originalmente se desarrolló para Unix, aunque cualquier sistema es compatible con
el lenguaje siempre y cuando exista un intérprete programado para él.

Interpretado

25
Quiere decir que no se debe compilar el código antes de su ejecución En ciertos
casos, cuando se ejecuta por primera vez un código, se producen unos bytecodes
que se guardan en el sistema y que sirven para acelerar la compilación implícita que
realiza el intérprete cada vez que se ejecuta el mismo código.

Interactivo

Python dispone de un intérprete por línea de comandos en el que se pueden


introducir sentencias. Cada sentencia se ejecuta y produce un resultado visible, que
puede ayudarnos a entender mejor el lenguaje y probar los resultados de la
ejecución de porciones de código rápidamente.

Orientado a Objetos

La programación orientada a objetos está soportada en Python y ofrece en muchos


casos una manera sencilla de crear programas con componentes reutilizables.

Funciones y librerías

Dispone de muchas funciones incorporadas en el propio lenguaje, para el


tratamiento de strings, números, archivos, etc. Además, existen muchas librerías
que podemos importar en los programas para tratar temas específicos como la
programación de ventanas o sistemas en red o cosas tan interesantes como crear
archivos comprimidos en .zip.

Sintaxis clara

Python tiene una sintaxis muy visual, gracias a una notación identada de obligado
cumplimiento. Para separar las porciones de código en Python se debe tabular hacia
dentro, colocando un margen al código que iría dentro de una función o un bucle.
Esto ayuda a que todos los programadores adopten unas mismas notaciones y que
los programas de cualquier persona tengan un aspecto muy similar.

2.2.4 Ventajas del uso de Python

 Posee una sintaxis simple y fácil de aprender.

 Es un lenguaje extremadamente productivo.

26
 Tiene licencia de código abierto y está disponible para los usuarios de forma
gratuita.

 Es un lenguaje muy portable y multiplataforma.

 Cuenta con una amplia comunidad activa de desarrollo.

 Existen una amplia gama de bibliotecas disponibles para extender sus


funcionalidades.

 Presenta una fácil integración con otros lenguajes de programación.

2.2.5 Desventajas del uso de Python

 Python posee una baja velocidad de procesamiento, por lo que puede volverse
difícil de manejar para aplicaciones grandes y complejas.

 Sus funciones dinámicas pueden causar errores en tiempo de ejecución.

 La mayoría de los servidores con servicio hosting no tienen soporte para Python.

 Posee un consumo ineficiente de memoria para realizar algunas tareas.

 Cuenta con una programación débil para dispositivos móviles.

2.2.6 Tipos de datos

Los tipos de datos básicos de Python son los booleanos, los numéricos y las
cadenas de caracteres.

Python también define otros tipos de datos, entre los que se encuentran:

 Secuencias: Los tipos list, tuple y range

 Mapas: El tipo dict

 Conjuntos: El tipo set

 Iteradores

 Clases

27
 Instancias

 Excepciones

2.2.6.1Tipos numéricos

Python define tres tipos de datos numéricos básicos: enteros, números de punto
flotante y los números complejos.

Números enteros

El tipo de los números enteros es int. Este tipo de dato comprende el conjunto de
todos los números enteros, pero como dicho conjunto es infinito, en Python el
conjunto está limitado realmente por la capacidad de la memoria disponible. No hay
un límite de representación impuesto por el lenguaje.

Números de punto flotante

Para representar el mayor número posible de los números reales con las
limitaciones de memoria, se adaptó la notación científica de representación de
números reales al sistema binario.

2.2.6.2 Números complejos

El último tipo de dato numérico básico que tiene Python es el de los números
complejos, complex.

Los números complejos tienen una parte real y otra imaginaria y cada una de ellas
se representa como un float.

2.2.6.3 Tipo booleano

En Python la clase que representa los valores booleanos es bool. Esta clase solo
se puede instanciar con dos valores/objetos: True para representar verdadero y
False para representar falso.

2.2.6.4 Tipo cadena de caracteres

Otro tipo básico de Python, e imprescindible, son las secuencias o cadenas de


caracteres. Este tipo es conocido como string, aunque su clase verdadera es str.

28
Formalmente, un string es una secuencia inmutable de caracteres en formato
Unicode.

2.3 Bases de datos

Imagen 10. Base de datos.

Fuente: Arkhotech.

Una base de datos es una recopilación organizada de información o datos


estructurados, que normalmente se almacena de forma electrónica en un sistema
informático. Una base de datos es un “almacén” que nos permite guardar grandes
cantidades de información de forma organizada para que luego podamos encontrar
y utilizar fácilmente.

2.3.1 Tipos de bases de datos

Existen muchos tipos diferentes de bases de datos. La mejor base depende de


cómo se pretenda utilizar los datos.

2.3.1.1 Bases de datos relacionales

Las bases de datos se hicieron predominantes en la década de 1980. Los elementos


de una base de datos relacional se organizan como un conjunto de tablas con
columnas y filas. La tecnología de bases de datos relacionales proporciona la forma
más eficiente y flexible de acceder a información estructurada.

2.3.1.2 Bases de datos orientadas a objetos

29
La información de una base de datos orientada a objetos se representa en forma de
objetos, como en la programación orientada a objetos.

2.3.1.3 Bases de datos distribuidas

Una base de datos distribuida consta de dos o más archivos que se encuentran en
sitios diferentes. La base de datos puede almacenarse en varios ordenadores,
ubicarse en la misma ubicación física o repartirse en diferentes redes.

2.3.1.4 Almacenes de datos

Un repositorio central de datos, un data warehouse es un tipo de base de datos


diseñado específicamente para consultas y análisis rápidos.

2.3.1.5 Bases de datos NoSQL

Una base de datos NoSQL, o base de datos no relacional, permite almacenar y


manipular datos no estructurados. Las bases de datos NoSQL se hicieron populares
a medida que las aplicaciones web se volvían más comunes y complejas.

2.3.1.6 Bases de datos orientadas a grafos

Una base de datos orientada a grafos almacena datos relacionados con entidades
y las relaciones entre entidades.

2.3.1.7 Bases de datos OLTP

Una base de datos OLTP es una base de datos rápida y analítica diseñada para
que muchos usuarios realicen un gran número de transacciones.

2.3.2 Sistema gestor de base de datos

Una base de datos requiere un programa de software de bases de datos completo,


conocido como sistema de gestión de bases de datos. Un DBMS sirve como interfaz
entre la base de datos y sus programas o usuarios finales, lo que permite a los
usuarios recuperar, actualizar y gestionar cómo se organiza y se optimiza la
información.

2.4 Framework

30
Imagen 11. Framework.

Fuente: Crónicas Freelancer.

Un framework es un esquema o marco de trabajo que ofrece una estructura base


para elaborar un proyecto con objetivos específicos, una especie de plantilla que
sirve como punto de partida para la organización y desarrollo de software. Los
frameworks son usados porque permiten acelerar el trabajo y favorecer que este
sea colaborativo, reducir errores y obtener un resultado de más calidad.

2.4.1 Tipos de Frameworks

 Para aplicaciones web

Son aquellos Frameworks que se utilizan específicamente para la creación de


proyectos online. Desde el diseño web de una página hasta los servicios web más
específicos.

 Para aplicaciones en general

Permite complementar la estructura de una aplicación para un sistema operativo.

 Para tecnología AJAX

La tecnología AJAX permite que el usuario haga solicitaciones al servidor sin que
sea necesario recargar una página después de cada nueva solicitud. De esta forma,
las informaciones van surgiendo a medida que son solicitadas sin la necesidad de
que la página quede recargándose.

31
 De gestión de contenidos

A estos Frameworks también se les conoce como CMF, que significa, Content
Manager Framework y facilita la programación de aplicaciones de un Sistema de
Gestión de Contenidos, popularmente conocido como CMS.

 De Multimedia

Esta interfaz facilita el trabajo de los programadores que trabajan con video, audio
e imagen y colabora con la creación de las aplicaciones multimedias en general,
pudiendo servir para proyectos más complejos, como videoconferencias y
conversores de medios.

2.4.2 Flask

Imagen 12. Flask.

Fuente: Wikipedia.

Es un “micro” Framework escrito en Python y desarrollado para simplificar y hacer


más fácil la creación de Aplicaciones Web bajo el patrón MVC.

2.4.2.1 Características Flask

 Flask es un “micro” Framework: Para desarrollar una App básica o que se quiera
desarrollar de una forma ágil y rápida Flask puede ser muy conveniente, para
determinadas aplicaciones no se necesitan muchas extensiones y es suficiente.

 Incluye un servidor web de desarrollo: No se necesita una infraestructura con un


servidor web para probar las aplicaciones sino de una manera sencilla se puede
correr un servidor web para ir viendo los resultados que se van obteniendo.

32
 Tiene un depurador y soporte integrado para pruebas unitarias: Si tenemos algún
error en el código que se está construyendo se puede depurar ese error y se
puede ver los valores de las variables. Además, está la posibilidad de integrar
pruebas unitarias.

 Es compatible con Python3.

 Es compatible con wsgi: Wsig es un protocolo que utiliza los servidores web para
servir las páginas web escritas en Python.

 Buen manejo de rutas: Cuando se trabaja con Apps Web hechas en Python se
tiene el controlador que recibe todas las peticiones que hacen los clientes y se
tienen que determinar que ruta está accediendo el cliente para ejecutar el código
necesario.

 Soporta de manera nativa el uso de cookies seguras.

 Se pueden usar sesiones.

 Flask no tiene ORMs: Pero se puede usar una extensión.

 Sirve para construir servicios web o aplicaciones de contenido estático.

 Flask es Open Source y está amparado bajo una licencia BSD.

 Buena documentación, código de GitHub y lista de correos.

2.5 API REST

Imagen 13. Rest Api.

Fuente: Medium.

33
Una API de REST, o API de RESTful, es una interfaz de programación de
aplicaciones que se ajusta a los límites de la arquitectura REST y permite la
interacción con los servicios web de RESTful.

2.6 Insomnia

Imagen 14. Insomnia Logo.

Fuente: Snapcraft.

Insomnia es un cliente REST multiplataforma, con una interfaz clara y sencilla. Con
funcionalidades que nos van a facilitar enormemente el trabajo.

2.7 Git

Imagen 15. Git.

Fuente: Medium.

Es un software de control de versiones diseñado por Linus Torvalds, pensando en


la eficiencia, la confiabilidad y compatibilidad del mantenimiento de versiones de
aplicaciones cuando estas tienen un gran número de archivos de código fuente. Su
propósito es llevar registro de los cambios en archivos de computadora incluyendo
coordinar el trabajo que varias personas realizan sobre archivos compartidos en un
repositorio de código.

34
CAPÍTULO IIl

“Desarrollo”

35
Como se sabe, hoy en día el mundo laboral se encuentra en constante cambio, ya
que las nuevas tecnologías que van surgiendo no esperan a nadie, la mayoría, sino
que todas las empresas e instituciones buscan el conocer las diferentes tecnologías
y con ello irse adaptando a la demanda, buscando así tener una gran presencia en
el mercado laboral. Es un hecho que una constante capacitación y actualización de
conocimientos en los integrantes de un equipo de desarrollo, es necesaria, pues
mediante las mismas será posible el fortalecer u obtener diversas aptitudes y
conocimientos que permitirán al equipo abordar diversos ámbitos de tecnologías
relevantes en ese tiempo.

Python, es un buen lenguaje de programación, tiene una curva de aprendizaje no


muy grande, a su vez que permite el ahorro de tiempo y costos, para desarrollar
aplicaciones robustas. Al ser uno de los lenguajes más usados en el mundo su
demanda es demasiado alta, por tal motivo, es de suma importancia el conocer lo
esencial sobre él.

En el presente capítulo se detallan ciertas actividades realizadas a manera de


práctica, todo con el fin de ir entendiendo más sobre la tecnología en cuestión.

3.1 Desarrollo

Los cursos que se proporcionaron, fueros abordados pensando en que cuando se


llegara la finalización de los mismos, se pudieran emplear los conocimientos
adquiridos en el desarrollo de aplicaciones.

Entre los apartados tomados en cuenta, se llevaron a cabo 2 actividades


importantes, siendo estas enfocadas en llevar una retroalimentación de temas vistos
con anterioridad.

El asesor encargado de los cursos, toma en cuenta el poner en práctica lo aprendido


mediante la realización de dos APIS, mismas que servirán para consolidar ciertos
temas tocados en los diversos temas de la capacitación. El asesor estará siempre
guiando para que las actividades sean realizadas con éxito.

36
3.2 Configuración de las Herramientas de desarrollo

Ciertas cuestiones a tomar en cuenta a la hora de realizar un proyecto, es el tener


las herramientas correctas para ir avanzando en el mismo, tanto de hardware como
de software, estos permitirán trabajar de una buena manera, evitando así algunos
problemas a futuro.

Un IDE funge como una herramienta de gran peso y esencial para todo
programados, el contar con un buen IDE, que sea intuitivo, cómodo y fácil de usar
es de suma importancia, ya que cuando se desee ingresar largas líneas de código
será mejor la visualización del mismo y habrá una mejor gestión.

El IDE que fue tomado en cuenta durante estas capacitaciones fue el editor de texto
Visual Studio Code el cual es una gran elección puesto que, incluye soporte para la
depuración, control integrado de Git, resaltado de sintaxis, finalización inteligente de
código, fragmentos y refactorización de código. También es personalizable, por lo
que las personas pueden cambiar el tema del editor, los atajos de teclado y las
preferencias. Y un punto importante es que es gratuito.

Imagen 16. Visual Studio Code.

Fuente: Propia.

37
Para ir probando las apps que se vayan desarrollando, será necesario el utilizar un
navegador web, que servirá como herramienta para cumplir con dicho objetivo. En
este caso se optó por utilizar Google Chrome el cual hoy en día es uno de los más
populares del mercado, contando con buenas herramientas en su developer tools
siendo este mejor que otros navegadores de su estilo.

Imagen 17. Google Chrome.

Fuente: Hipertextual.

Otra herramienta importante es Insomnia, el cual es un cliente REST que permitirá


hacer consultas a una API REST. Y en cuanto al uso más inmediato, es para realizar
pruebas de funcionamiento de una API.

Imagen 18. Instalación Insomnia.

Fuente: Propia.

38
3.3 Actividades de desarrollo

Como se mencionó en este documento, las actividades de desarrollo realizados


tienen como objetivo el reforzar los conocimientos que conforme la marcha se va
adquiriendo. Cada actividad, puede tocar diversos temas importantes. Estos son
relativamente sencillos, en caso que se haya comprendido bien los temas, los retos
de programación ayudan a retener el conocimiento a su vez que se va dominando
más las tecnologías empleadas.

3.3.1 Desarrollar una API REST relacionada a productos en venta con Python
y el framework Flask

El desarrollo de esta actividad como su nombre lo dice, consistió en crear una API
REST en la cual se manejará información relacionada a productos que se
encontrarían en una tienda en línea, simulando cómo sería el trabajar en una
aplicación desde su back-end utilizando Python y Flask para ello.

Con la realización de esta aplicación se tomaron en cuenta diversos aspectos como


lo son:

 Importación de módulos

 Uso de funciones

 Retorno de funciones

 Importación de dependencias

 Promesas

 Callbacks

 Peticiones HTTP

 Servidores locales

Para la creación de una API Rest, es necesario conocer los temas mencionados
anteriormente, para que esta cumpla con el protocolo RESTful que caracteriza este
tipo de aplicaciones.

39
Estructura del Proyecto

Imagen 19. Estructura del Proyecto.

Fuente: Propia.

Se observan 2 archivos y una carpeta con la caché que se está generando durante
la ejecución de la app. Los otros 2 archivos son los esenciales puesto que en ellos
está la información y la lógica de ejecución de la app.

Archivo products.py: tiene solo información básica sobre ciertos productos para
gestionar mediante los métodos creados, cuentan con atributos como nombre,
precio y cantidad.

Imagen 20. Archivo products.py

Fuente: Propia.

40
Archivo app.py: contiene todas las importaciones tanto del framework y métodos
necesarios, así como los métodos GET, POST, PUT y DELETE necesarios para
gestionar los datos.

Imagen 21. Importaciones app.py

Fuente: Propia.

En la primera línea se importa el framework de Flask, jsonify ayuda a crear


respuestas que retornen información en forma de json, por último, en la misma línea
se importa request que sirve para mandar un cuerpo en las peticiones de DELETE,
PUT o POST.

En la segunda línea, se crea la app que será utilizada.

Por último, en la tercera línea de código se importan los productos existentes en el


archivo de products.py, mismos que serán manipulados en base a los métodos
creados.

Imagen 22. Ruta por default en el servidor.

Fuente: Propia.

La siguiente ruta, funciona a manera de testear que el server está funcionando con
éxito, solo utiliza una función para devolver un mensaje como json para dar la
bienvenida a la app.

41
Imagen 23. Mensaje de bienvenida servidor.

Fuente: Propia.

Una vez corriendo el servidor la ruta por default es el mensaje mencionado.

De la misma manera, se testea la petición desde Insomnia

Imagen 24. Mensaje de bienvenida desde insomnia.

Fuente: Propia.

Como se puede observar fue exitoso, ya que regresa un código 200 a manera de
respuesta.

Imagen 25. Método GET todos los productos.

Fuente: Propia.

Cuando se ejecuta esta ruta, se invoca el método getProducts que es el encargado


de devolver todos los productos que se tengan en ese momento.

42
Imagen 26. Método GET todos los productos en el navegador.

Fuente: Propia.

Al agregar la ruta en el navegador regresa satisfactoriamente los registros


existentes de productos en ese momento.

Imagen 27. Método GET todos los productos desde Insomnia.

Fuente: Propia.

Al ejecutar el método GET desde Insomnia obtenemos un resultado exitoso,


regresando los productos existentes al momento y un código 200 indicando que
todo salió bien.

43
Imagen 28. Método GET un solo producto.

Fuente: Propia.

Esta ruta, recibe un string el cual es un nombre de producto el cual se necesitará


para devolverlo con el método que ejecuta. Una vez recibido el string con el nombre
del producto se invoca el método getProduct que se le inyecta el nombre del
producto.

Primero se crea una variable con el nombre productsFound la cual almacenará el


resultado de revisar las coincidencias del nombre solicitado con la existencia de
productos similares, después se evalúa que esa variable tenga más de un registro
en ella, si es así significa que si encontró coincidencia y retorna dicho producto como
json, en dado caso que no exista retorna un mensaje de que no fue encontrado.

Imagen 29. Método GET un solo producto desde Insomnia.

Fuente: Propia.

En este caso se ingresó el nombre de Monitor el cual, si se encontraba entre los


productos, por lo que fue retornado satisfactoriamente y con un código 200.

44
Imagen 30. Método GET producto inexistente desde Insomnia.

Fuente: Propia.

Como se observa se ingresó el producto TV y al no tener coincidencias arroja el


mensaje de que el producto no fue encontrado.

Imagen 31. Método POST.

Fuente: Propia.

En esta ruta al no ser de tipo GET, se tiene que especificar de manera manual que
es un método POST, al llamarse la ruta esta invoca la función de addProduct en el
cual en base al cuerpo recibido en la petición crea un nuevo producto y lo agrega al
arreglo de productos existente, por último, retorna un mensaje satisfactorio pues se
agregó el producto y arroja los productos actualizados.

Imagen 32. Método POST desde Insomnia.

Fuente: Propia.

45
Para probar el método desde Insomnia, dentro del método POST se le mandó un
nuevo producto con el nombre Router, el cual tiene un precio y cantidad para
agregar, el cual como se puede ver fue agregado satisfactoriamente y fue retornado
junto con los otros productos.

Imagen 33. Método PUT.

Fuente: Propia.

La ruta recibe un string con el nombre del producto a actualizar, se le especifica que
debe usar el método PUT para hacerlo.

Una vez recibido el nombre del producto a cambiar, se invoca la función editProduct
el cual en sus parámetros recibe el nombre a buscar, se evalúa que exista entre los
productos existentes, entra a una validación en la que si la variable que trae los
resultados debe ser mayor a 0 para afectar al producto y actualizarlo, al actualizarlo
se arroja un mensaje de que fue actualizado el producto y retorna el producto ya
actualizado, en dado caso que no se encuentre se da un mensaje avisando que el
producto no fue encontrado.

Imagen 34. Método PUT exitoso desde insomnia.

Fuente: Propia.

46
Como se observa el producto a modificar fue el que tenía el nombre de Laptop este
al si existir se cambió por Laptop Gamer y fue retornado el producto modificado
junto con un mensaje de que fue actualizado.

Imagen 35. Método PUT erróneo desde insomnia.

Fuente: Propia.

En este caso se le mandó como nombre a cambiar Escritorio este al no existir arroja
un mensaje relacionado con la inexistencia del producto.

Imagen 36. Método DELETE.

Fuente: Propia.

La ruta especificada para DELETE recibe un nombre de producto a eliminar, se le


específica el método a usar en este caso el DELETE.

Ya pasado el nombre se invoca la función deleteProducts, este recibe el nombre del


producto a eliminar, se procede a buscarlo entre los productos existentes, al
terminar el ciclo entra a una condicional que evalúa coincidencias si se encontraron
coincidencias se elimina el producto del arreglo de productos y se retorna un
mensaje de que efectivamente fue eliminado junto con el arreglo nuevo de
productos. En dado caso de no encontrar coincidencias se retorna un mensaje de
que no fue encontrado dicho producto.

47
Imagen 37. Método DELETE exitoso desde Insomnia.

Fuente: Propia.

Al ejecutar la petición DELETE del producto Monitor y este existir, el producto es


eliminado de manera satisfactoria, se muestra un mensaje de que efectivamente fue
borrado y además retorna el nuevo arreglo de productos.

Imagen 38. Método DELETE erróneo desde Insomnia.

Fuente: Propia.

Al pasarle un producto inexistente, en este caso un Control, la aplicación responde


con el mensaje que el producto no fue encontrado.

Imagen 39. Puerto Usado en el server.

Fuente: Propia.

El server corre sobre el puerto 4000, se valida solo que este corriendo como app
principal.

48
Esta práctica fue de gran ayuda puesto que al poner a prueba los conocimientos
previos relacionados, con peticiones HTTP, promesas, callbacks y consumo de
APIS Rest será posible crear aplicaciones en un futuro siguiendo una serie de pasos
similares. Este reto de programación fue un éxito, solamente quedaría de lado que
pudo haber sido mejor si se hubiera utilizado persistencia, para retener los datos y
no solo usarlos de una manera volátil, pero como la práctica se estipuló de esa
manera fue cumplida en su totalidad.

3.3.2 Desarrollar una API REST para tareas con Python, Flask y MySQL.

La presente actividad consistió en la creación de una API REST la cual sería


encargada de manejar registros de tareas sencillas a manera de agendar las
mismas, modificarlas, eliminarlas y listarlas, esto para entender más cómo
funcionaría estas herramientas en el desarrollo de un back-end profesional.

El desarrollo de este reto puso en práctica temas importantes como los siguientes:

 Importación de módulos

 Uso de funciones

 Retorno de funciones

 Importación de dependencias

 Promesas

 Callbacks

 Peticiones HTTP

 Servidores locales

 Bases de datos

Para la realización de esta práctica era necesario el conocer los tópicos


mencionados anteriormente, para que todo saliera de la mejor manera y en verdad
fuera una aplicación RESTful.

49
Estructura del Proyecto

Imagen 40. Estructura.

Fuente: Propia.

Se observan dos directorios, uno con el nombre src el cual contiene un archivo
app.py este cuenta con toda la lógica, es decir los métodos asociados a cuando se
realices las diferentes peticiones dentro de la API. El otro directorio es donde se
instaló Virtualenv que es una herramienta usada para crear un entorno Python
aislado, el cual tiene sus propios directorios de instalación que no comparten
bibliotecas con otros entornos virtualenv o las bibliotecas instaladas globalmente en
el servidor, por lo que permite trabajar de forma local sin problemas.

Imagen 41. Importaciones en app.py

Fuente: Propia.

Fue necesario el realizar diferentes importaciones, entre las que están, Flask que
fue el framework utilizado, jsonify que permite el retornar información en el formato

50
json, sqlalchemy y marshmallow que son las dependencias que fueron utilizadas
para realizar las conexiones con la base de datos a usar.

En app, se configura el directorio de la base de datos que será usada, el nombre


usado fue flaskmysql, se le específica que no siga todas las modificaciones desde
sqlalchemy para no tener problemas, por último, en la variable db se crea una
instancia de SQLAlchemy la cual recibe la app, de igual forma se crea una instancia
de Marshmallow que también recibe la app.

Imagen 42. Clase Task

Fuente: Propia.

La creación de la clase Task es esencial, ya que esta permite la creación de las


columnas con sus especificaciones correspondientes, misma que asocia los
campos y, por último, con el método create_all se crea la tabla con el nombre task
que contiene los campos mencionados.

Imagen 43. Clase TaskSchema

Fuente: Propia.

La presente clase, recibe un esquema el cual se usa para asociar la información


recibida en los campos correctos de la base de datos y gestionarse.

51
Imagen 44. Task_schema y Tasks_schema

Fuente: Propia.

Se crean dos variables, una con el nombre task_schema que es una instancia de
TaskSchema y sirve para obtener una sola respuesta de un registro existente en la
base de datos, la otra variable tasks_schema igual es una instancia de
TaskSchema, pero esta puede recibir diferentes registros y no solo uno.

Imagen 45. Ruta default

Fuente: Propia.

Esta ruta es la correspondiente al path por default que se arroja una vez iniciado el
servidor, la misma al iniciar invoca un método con el nombre hello que retorna solo
un mensaje de bienvenida como un json.

Imagen 46. Mensaje de inicio en el navegador

Fuente: Propia.

El mensaje una vez que se corre el servidor en el puerto seleccionado, es arrojado


con éxito por lo que se puede proseguir con los diferentes métodos para las
peticiones HTTP realizadas en esta aplicación.

52
Imagen 47. Método POST

Fuente: Propia.

Al ejecutarse el método POST, se invoca a una función createTask, la cual como su


nombre lo dice crea las tareas y las inserta en la base de datos. Esta funciona
recibiendo el cuerpo del POST y asociando el título y la descripción a variables con
el mismo nombre, después se crea una instancia de task a la cual se le pasan el
título y la descripción, esta task creada se agrega a la base de datos, para luego
cerrar la sesión de la misma, por último, se retorna el nuevo elemento creado.

Imagen 48. Método desde insomnia

Fuente: Propia.

Una vez ejecutado el método POST se le mandan los argumentos que se ven en la
imagen, solamente el título y descripción puesto que el id es auto incrementable, en
lado derecho se observa la tarea que fue insertada y se le dio el id 5, esto porque
ya se habían realizado pruebas y ese fue el id correspondiente a la sucesión.

Lo siguiente sería revisar la base de datos para ver si efectivamente fue insertado
en la tabla de las tareas.

53
Imagen 49. Inserción en BD

Fuente: Propia.

Se insertaron más elementos, ya que para ejecutar los diferentes métodos será
necesario tener varios registros.

Imagen 50. Método GET

Fuente: Propia.

El Método GET al ser ejecutado y no recibir un parámetro, invoca a la función


getTasks, la cual asocia a una variable toda la información que se trae de realizar
una query de la tabla de tareas, a una variable de resultado se le pasa esa
información para finalmente retornarla como un json.

Imagen 51. Elementos en la base de datos

Fuente: Propia.

54
Antes de ejecutar el método GET en Insomnia para su testeo se muestran los
registros en el momento que tiene la base de datos.

Imagen 52. Elementos en la base de datos

Fuente: Propia.

Una vez ejecutada la petición desde insomnia se observa que fue satisfactoria, ya
que retorna todas las tareas presentes en la base de datos.

Imagen 53. Método GET una tarea

Fuente: Propia.

Es similar al anterior, solo que este recibe un id, el cual le pasa a la función que
invoca, para que dicha función asocie ese id a una consulta para traerlo y guardarlo
en la variable task, al final se retorna la tarea que tenga el id indicado.

55
Imagen 54. Método GET una tarea desde insomnia

Fuente: Propia.

Como se sabía que existían en ese momento cuatro registros enumerados del 5 al
8, se optó por obtener el registro 7, lo cual como se observa en la imagen fue un
éxito.

Imagen 55. Método PUT

Fuente: Propia.

Este método recibe un id el cual se desea modificar, dentro se invoca una función
que se le inyecta el id y se le asocia a una query del id que se desea encontrar
mismo que se guarda en una variable con el nombre task, el título y la descripción
recibida como cuerpo se integran en variables con el mismo nombre, para después
insertarlas en el registro por medio del task, finalmente se cierra la sesión en la base
de datos y se retorna el elemento modificado.

Imagen 56. Método PUT desde insomnia

Fuente: Propia.

56
El registro a cambiar fue el 5, se mandaron los datos a modificar y como se observa
en el lado derecho fue satisfactorio.

Imagen 57. Cambio del registro en la base de datos

Fuente: Propia.

Se revisa la base de datos, la cual fue actualizada correctamente.

Imagen 58. Método DELETE

Fuente: Propia.

El último método, es el DELETE el cual le pasa a su función interna el id que se


quiere eliminar, dentro de la misma se asocia a una variable el id para poder así
removerlo, en la sesión de la base de datos se manda la variable con el id y con el
uso de la función interna delete se elimina, lo último que se realiza, es el cerrar la
sesión y retornas el registro que fue eliminado de la base de datos.

57
Imagen 59. Método DELETE desde Insomnia

Fuente: Propia.

Al probar el método desde insomnia, se decidió borrar el registro con el id 6, como


se puede ver fue eliminado de manera exitosa.

Imagen 60. Registro removido de la base de datos

Fuente: Propia.

Se vuelve a entrar a la base de datos, para verificar que en efecto se haya removido,
lo cual si fue realizado.

Imagen 61. Levantar el server

Fuente: Propia.

En estas líneas lo que se hace es validar que la app este corriendo con el nombre
main, y que al correr se utilice el debugger, al no asignarle ningún puerto el server
se encontrará corriendo desde el puerto 5000.

Imagen 62. Puerto del server

Fuente: Propia.

58
Con la realización de esta práctica se tomaron en cuenta conocimientos adquiridos
sobre las peticiones HTTP, mismas que como se sabe son fundamentales dentro
de la creación de aplicaciones, en este caso fueron utilizadas para realizar una
REST API. El presente reto fue un completo éxito, ya que se cubrieron temas que
no fueron abordados en la práctica anterior, un tema esencial como la persistencia
es de suma importancia, ya que es necesario el mantener la información dentro de
cualquier sistema o aplicación.

59
CAPÍTULO IV

“Resultados y Conclusiones”

60
4.1 Resultados

Durante el periodo que se llevaron a cabo los cursos de capacitación, se lograron


completar de una manera exitosa los diferentes retos de programación que fueron
llevados a cabo. Con la ayuda de un pc y el software necesario se probaron las
aplicaciones creadas.

Una vez concluidos los cursos en forma de capacitación, fue posible el conocer y
comprender de una mejor manera diversos aspectos básicos sobre el lenguaje de
programación Python. Los diferentes aprendizajes que se fueron adquiriendo han
sido empleados de manera satisfactoria para trabajar el uso y creación de APIS
REST.

4.2 Conclusiones

Tomando en cuenta los resultados, se puede afirmar que las capacitaciones fueron
una gran oportunidad, puesto que permitieron ampliar o mejoras conocimientos, y
así mismo enfocarlos a un ámbito más especializado. El realizar capacitaciones
constantes debe ser una prioridad por parte de las empresas, ya que, al querer
seguir mejorando en el campo laboral, poco a poco se deben ir adaptando a las
demandas de nuevas tecnologías.

Una buena capacitación, puede ayudar a aumentar la eficiencia en un equipo


empresarial, a su vez puede permitir que los integrantes del mismo se puedan
mantener actualizados a las nuevas formas de utilizar tecnologías con el uso de
buenas prácticas, y como se sabe que cuando los programadores se mantienen con
conocimientos nuevos y solidos es más alta la probabilidad de crear un mejor equipo
de desarrollo.

61
Bibliografía

[1] RockContent. (2019, abril 20). ¿Qué es un lenguaje de programación y qué tipos
existen? | Blog Programación. Recuperado el 8 de noviembre de 2021. Disponible
en: https://rockcontent.com/es/blog/que-es-un-lenguaje-de-programacion/

[2] Martín López Mendoza. (2020, julio 16). Qué es un lenguaje de programación |
Lenguajes de Programación. Recuperado el 8 de noviembre de 2021. Disponible
en: https://openwebinars.net/blog/que-es-un-lenguaje-de-programacion/

[3] Desarrollo Web. (2003, noviembre 19). Qué es Python | Guía desarrollo web.
Recuperado el 8 de noviembre de 2021. Disponible en:
https://desarrolloweb.com/articulos/1325.php

[4] Tokio School. (2020, octubre 22). La historia de Python. Las versiones de un
lenguaje único | Plataforma educativa. Recuperado el 8 de noviembre de 2021.
Disponible en: https://www.tokioschool.com/noticias/historia-python/

[5] Student Place. (2018, septiembre 6). ¿Python? | Blog web. Recuperado el 8 de
noviembre de 2021. Disponible en:
https://studentplace98.blogspot.com/2018/09/python.html

[6] Love Technology. (Sin fecha). El Lenguaje de Programación Python, Pros y


Contras | Desarrollo Tecnológico. Recuperado el 8 de noviembre de 2021.
Disponible en: https://lovtechnology.com/lenguaje-programacion-python-pros-
contras/

[7] Covantec. (Sin fecha). Ventajas y desventajas | Fundamentos Python.


Recuperado el 8 de noviembre de 2021. Disponible en: https://entrenamiento-
python-basico.readthedocs.io/es/latest/leccion1/ventajas_desventajas.html

[8] Juan José Lozano Gómez. (Sin fecha). Tipos de datos básicos de Python | Blog
Python. Recuperado el 8 de noviembre de 2021. Disponible en:
https://j2logo.com/python/tutorial/tipos-de-datos-basicos-de-python/

62
[9] Maestros del Web. (2007, octubre 26). ¿Qué son las bases de datos? | Platzi
Editorial. Recuperado el 8 de noviembre de 2021. Disponible en:
http://www.maestrosdelweb.com/que-son-las-bases-de-datos/

[10] Oracle. (Sin fecha). Base de datos | Guía Oracle. Recuperado el 8 de noviembre
de 2021. Disponible en: https://www.oracle.com/mx/database/what-is-database/

[11] Digital Workers. (2021, agosto 19). Framework | Glosario desarrollo.


Recuperado el 9 de noviembre de 2021. Disponible en:

https://www.edix.com/es/instituto/framework/

[12] RockContent. (2020, enero 8). Guía completa del Framework: qué es, cuáles
tipos existen y por qué es importante en Internet | Blog Programación. Recuperado
el 9 de noviembre de 2021. Disponible en:
https://rockcontent.com/es/blog/framework/

[13] Epitech. (2021, julio 8). Qué es Flask (Python) y cuáles son sus principales
ventajas | Guía. Recuperado el 9 de noviembre de 2021. Disponible en:
https://www.epitech-it.es/flask-python/

[14] José Domingo Muñoz. (2017, noviembre 17). Qué es Flask | Lenguajes de
programación. Recuperado el 9 de noviembre de 2021. Disponible en:
https://openwebinars.net/blog/que-es-flask/

[15] RedHat. (2020, mayo 8). ¿Qué es una API de REST? | Soluciones internet.
Recuperado el 9 de noviembre de 2021. Disponible en:
https://www.redhat.com/es/topics/api/what-is-a-rest-api

[16] Atareao. (2018, agosto 20). INSOMNIA, UN PRODUCTIVO CLIENTE REST |


Guía. Recuperado el 9 de noviembre de 2021. Disponible en:
https://atareao.es/software/programacion/insomnia-un-productivo-cliente-rest/

[17] Aarón Leyva. (Sin fecha). Control de versiones con Git | Portales hacia el
pasado. Recuperado el 9 de noviembre de 2021. Disponible en:
https://web.inventoteca.com/blog/noticias-1/post/control-de-versiones-con-git-7

63
Glosario

Aplicación: Una aplicación es un programa informático diseñado como una


herramienta para realizar operaciones o funciones específicas. Generalmente, son
diseñadas para facilitar ciertas tareas complejas y hacer más sencilla la experiencia
informática de las personas.

Lenguaje de programación: Un lenguaje de programación es un conjunto de


símbolos y códigos usados para orientar la programación de estructuras en el
desarrollo web.

Python: Python es un lenguaje de programación de alto nivel que se utiliza para


desarrollar aplicaciones de todo tipo. A diferencia de otros lenguajes como Java o
.NET, se trata de un lenguaje interpretado, es decir, que no es necesario compilarlo
para ejecutar las aplicaciones escritas en Python, sino que se ejecutan directamente
por el ordenador utilizando un programa denominado interpretador, por lo que no es
necesario “traducirlo” a lenguaje máquina.

Framework: Un Framework es una estructura base utilizada como punto de partida


para elaborar un proyecto con objetivos específicos.

Bases de datos: Una base de datos es una recopilación organizada de información


o datos estructurados, que normalmente se almacena de forma electrónica en un
sistema informático.

Servicios web: Es una tecnología que utiliza un conjunto de protocolos y


estándares que sirven para intercambiar datos entre aplicaciones. Distintas
aplicaciones de software desarrolladas en lenguajes de programación diferentes, y
ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para
intercambiar datos en redes de ordenadores como Internet.

Flask: Es un framework minimalista escrito en Python que permite crear


aplicaciones web rápidamente y con un mínimo número de líneas de código.

64
API REST: Una API de REST, o API de RESTful, es una interfaz de programación
de aplicaciones que se ajusta a los límites de la arquitectura REST y permite la
interacción con los servicios web de RESTful.

Sistema gestor de base de datos: Es un conjunto de programas que permiten el


almacenamiento, modificación y extracción de la información en una base de datos.
Los usuarios pueden acceder a la información usando herramientas específicas de
consulta y de generación de informes, o bien mediante aplicaciones al efecto.

65

También podría gustarte