Flask-SQLAlchemy

Publicado por Andrea Navarro en

En este artículo veremos la instalación de la extensión Flask-SQLAlchemy para el framework Flask y algunas configuraciones básicas para diferentes bases de datos.

Es una extensión de Flask que permite integrar la librería SQLAlchemy a una aplicación Flask. SQLAlchemy es un toolkit que permite manejar consultas de tipo SQL y un ORM o Mapeo objeto-relacional. Este tipo de modelos permiten convertir los datos de una base relacional en modelos de objetos utilizados en la programación de la aplicación y viceversa.

Los ORM permiten crear una capa de abstracción entre la aplicación y la base de datos.

En el caso de querer hacer funcionar una aplicación con un tipo de base de datos diferente solo será necesario modificar las configuraciones de conexión. Debido a la traducción de objeto a tabla realizada por el ORM no será necesario modificar código.

Otra ventaja importante es la capacidad de desarrollar una aplicación que interactúe con una base de datos sin necesidad de tener un conocimiento profundo sobre su lenguaje. Todas las interacción serán programadas a nivel objeto y el ORM será el encargado de traducirlo al lenguaje de la base de datos correspondiente.

Instalar Flask-SQLAlchemy

Es posible instalar Flask-SQLAlchemy utilizando el manejador de paquetes pip.

pip3 install Flask-SQLAlchemy

Configuración

Para utilizar Flask-SQLAlchemy en nuestra aplicación Flask es necesario cargar la configuración necesaria y crear el objeto SQLAlchemy. A este objeto se le pasará la aplicación de Flask como argumento.

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =
'mysql+pymysql://usuario:pass@localhost/nombre_base'
db = SQLAlchemy(app)

El objeto SQLAlchemy contiene las aplicaciones y funcionalidades de manejo de base de datos. También provee la clase Model que puede utilizarse para crear los modelos que representarán a las entidades de la base de datos.

Dependiendo el tipo de base de datos a los que debe conectarse existen diferentes formatos de URI.

MySQL

mysql://usuario:pass@hostname/nombre_base

SQLite

#Unix/Mac
sqlite:////path/absoluto/a/archivo.db
#Windows
sqlite:///C:\\path\\absoluto\\a\\archivo.db

Postgres

postgresql://usuario:pass@hostname/nombre_base

Flask-SQLAlchemy es capaz de generar automáticamente las tablas a partir de los modelos previamente especificados en nuestra aplicación. Sin embargo, la base de datos en sí debe estar creada previamente con los datos especificados en la configuración de conexión.

Registrar consultas

Si se está desarrollando una aplicación puede ser útil registrar todas las consultas realizadas a la base de datos. Esto permitirá verificar la queries y encontrar errores. Es posible activar esta funcionalidad con la configuración SQLALCHEMY_RECORD_QUERIES.

app.config['SQLALCHEMY_RECORD_QUERIES'] = True

Estas consultas pueden ser accedidas utilizando la función get_recorded_queries. Cada consulta realizada contendrá la query SQL realizada sobre la base de datos, los parámetros utilizados y el tiempo de ejecución.


En este artículo hemos visto como instalar y configurar Flask-SQLAlchemy en nuestra aplicación Flask. En el siguiente artículo veremos como crear los modelos que representarán las tablas en la base de datos.


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora