Está en la página 1de 8

PROCESO DE GESTIÓN DE FORMACIÓN PROFESIONAL INTEGRAL

FORMATO GUÍA DE APRENDIZAJE – MATERIAL DE APOYO


CONEXIÓN A BASES DE DATOS DESDE PYTHON

USO DE FLASK-SQLALCHEMY APLICACIONES WEB EN PYTHON

Vamos a retomar el proyecto del CRUD a la base de datos de productos con categorias
creada en Flask, donde inicialmente la base de datos cuenta con dos tablas, y donde ya
se realizó todo el procreso del CRUD creando la conexión y las consultas mediante código
sql directamente, ahora se explica el uso de un ORM como Flask-SqlAlchemy.

¿Qué es un ORM?

Un ORM (Object-Relational Mapper) es un toolkit que nos ayuda a trabajar con las tablas
de la base de datos como si fueran objetos, de manera que cada tabla se mapea con una
clase y cada columna con un campo de dicha clase. Además, también nos permite mapear
las relaciones entre tablas como relaciones entre objetos.

Una de las características que más atractivo hacen a los ORMs es que se puede cambiar
la base de datos sin apenas modificar código. De manera que puede programar la
aplicación con un ORM sin pensar que la base de datos es, por ejemplo, Mysql o
PostgreSQL.

Flask-SqlAkchemy

Flask-SQLAlchemy es una extensión de Flask que agrega soporte para el popular


mapeador relacional de objetos (ORM) Python (ORM) SQLAlchemy a las aplicaciones de
Flask. Su objetivo es simplificar SQLAlchemy con Flask proporcionando algunas
implementaciones predeterminadas para tareas comunes.

Para iniciar debemos primero instalar la extensión así:

El siguiente paso es en el archivo donde se crea la aplicación de tipo Flask, se debe integrar
con Flask-SqlAlchemy. Por lo anterior debemos importar a flask-SqlAlkchemy

GFPI-F-135 V01
Configurar a la aplicación la cadena de conexión cumpliendo con la siguiente estructura:
(Tomada de: https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/#configuration-keys)

Después crear el objeto que nos representa la base de datos, asociado a la aplicación
flask creada.

Creación de los modelos

Antés de iniciar tener en cuenta lo siguiente:

La clase base para todos sus modelos se llama db.Model. Se almacena en la instancia
de SQLAlchemy que debe crear.

Algunas partes que se requieren en SQLAlchemy son opcionales en Flask-SQLAlchemy.


Por ejemplo, el nombre de la tabla se establece automáticamente a menos que se anule.
Se deriva del nombre de la clase convertido a minúsculas y con "CamelCase" convertido a
"camel_case". Para anular el nombre de la tabla, establezca el atributo de clase
__tablename__.

Partiendo de la base de datos que contiene dos tablas, se procede a crear los Modelos.

GFPI-F-135 V01
Pasos:

a) Crear el archivo categoría.py en la carpeta modelo así:

En la línea 1 estamos importando el objeto db creado en el archivo donde se crea la


aplicación. Al definir la clase estamos heredando de la clase Padre db.Model que
representa la clase base para todos los modelos que vayamos a crear en nuestro proyecto.
En la línea 4 estamos configurando el atributo __table_name__ como categorías nombre
real de la tabla en la base de datos. En las líneas 5 y 6 estamos creando unos atributos a
partir de la clase base. En la siguiente imagen se muestra los diferentes tipos más
comunes que se pueden utilizar a la hora de crear una columna en el modelo.

La función __repr__ nos permite representar el objeto en formato string.

GFPI-F-135 V01
b) Crear el archivo producto.py en la carpeta modelo

En el modelo anterior podemos ver en la línea 10 como se crea un atributo que representa
el campo de la llave foránea en la base de datos. Adicionalmente cuando tenemos este
tipo de relación podemos crear un atributo que se convierte en un objeto de acuerdo al
elemento relacionado. En este modelo se crea el atributo categoría que representa al objeto
categoría relacionado con la clase Categoria.

GFPI-F-135 V01
Creación de los Controladores

Los controladores en el Modelo Vista Controlador son los encargados de recibir las
peticiones de la vista y comunicarse con el modelo para atender dichas solicitudes. Por lo
anterior en los controladores vamos a crear las rutas que atiendes dichas solicitudes.

a) Crear el archivo categoriaController.py en la carpeta controlador

En la función anterior se realiza el proceso de agregar una categoría a la base de datos. En


la línea 11 se crea un objeto de tipo Categoria, donde se le pasa como parámetro el valor
del atributo catNombre de acuerdo al valor que viene de la petición.
En la línea 12 se hace el proceso de agregar el objeto a la base de datos. Aquí se utiliza el
método add() de db.session el cual permite agregar o actualizar un objeto de acuerdo a
Flask-SqlAlchemy. En la línea 13 se confirma la inserción a la base de datos.

Siempre que se hagan procesos de inserción, actualización o eliminación se debe ejecutar


el método commit().

GFPI-F-135 V01
b) Creación del controlador productoController

La función anterior obtiene los productos de la base de datos. En la línea 13 podemos


observar como hace sqlAlchemy para hacer una consulta de tipo select. La consulta anterior
nos indica que hace una consulta de todos los productos que encuentre en la base de
datos. Recuerde que la consulta parte del objeto Producto. Adicionalmente debemos tener
en cuenta que el objeto producto tiene un campo relacionado con las categorías y que el
objeto Producto contiene un objeto que representa el objeto Categoría.

Ahora vamos a integrar en el archivo app.py el llamado a los controladores para el buen
funcionamiento de la aplicación.

GFPI-F-135 V01
GFPI-F-135 V01
Bibliografía

• Tutorial Flask Bases de datos con SqlAlchemy: https://j2logo.com/tutorial-flask-leccion-


5-base-de-datos-con-flask-sqlalchemy/
• Documentación de Flask-SqlAlchemy: https://flask-
sqlalchemy.palletsprojects.com/en/2.x/
• Documentación Oficial SqlAlchemy:
https://docs.sqlalchemy.org/en/14/intro.html#installation
• Usando bases datos en Flask y flask-sqlAchemy:
https://plataforma.josedomingo.org/pledin/cursos/flask/curso/u21/

Hasta aquí el material de apoyo. Se recomienda continuar con el ejercicio que permita
realizar el crud completo utilizando flask-sqlachemy.

CONTROL DEL DOCUMENTO

Nombre Cargo Dependencia Fecha

Autor (es) César Marino Cuéllar Chacón Instructor CIES-NEIVA 26-03-2023

GFPI-F-135 V01

También podría gustarte