DEV Community

Eduardo Santos
Eduardo Santos

Posted on

SQLAlchemy Intro

SQLAlchemy es una librería que facilita la comunicación entre programas hecho en Python y base de datos. Mayormente es utilizada como una ORM (Object Relational Mapper) que traduce las clases de Python a tablas en base de datos relacionales y que automáticamente convierte las funciones utilizadas a sentencias SQL. SQLAlchemy como la mayoría de herramientas provee una interfaz estándar que nos permite como desarrolladores crear la estructura y código de forma agnóstica del motor de base de datos a comunicarse, esto nos permite migrar de un motor a otro solo cambiando la cadena de conexión.

SQLAlchemy interactúa de forma directa con la API que integra la Base de datos de forma directa permitiéndonos utilizar funciones como connect, close, commit, rollback etc. Para cada motor de base de datos debemos de instalar el DBAPI que mas se adapte a nuestras necesidades para conectarnos a la base de datos.

Siempre que deseemos usar SQLAlchemy para interactuar con una base de datos, necesitamos crear una instancia de Engine (motor), esta instancia es la encargada de administrar dos factores cruciales Pools y Dialects.

Para crear la instancia del motor de base de datos utilizamos el siguiente código:

from sqlalchemy import create_engine

engine = create_engine(f’{motor_DB}://{user}:{pass}@{dirección_server}:{puerto}/{base_datos}’)

La estructura anterior tiene variables que pueden ser extraídas de un archivo .env para mejorar el proceso de desplegué del programa. En algunos casos será necesario pasarle el parámetro del driver o un conector ODBC.

Las conexiones agrupadas son la implementación mas utilizada en el patrón de grupos de objetos, estos grupos son utilizados como objetos pre inicializados en cache para que estén listos para su uso. En lugar de invertir tiempo creando objetos que son utilizados frecuentemente el programa utiliza un objeto preexistente. La principal razón para utilizar este patron de diseño es para mejorar el performance. Con las conexiones a base de datos el tiempo consumido y la cantidad de recursos mal utilizados volverían nuestra aplicación lenta y pesa para cualquier servidor.

SQLAlchemy Dialects nos permite crear aplicaciones que se comunican con diferentes motores de base de datos en la misma API. Los motores de base de datos mas populares han agregado el uso de SQL dentro de dialects, sin embargo, esto en algunas ocasiones puede generar un serio problema debido a que el código SQL no es un estándar entre los diferentes motores de base de datos, ya que estos últimos han personalizado la sintaxis para obtener los mismos resultados.

Para evitar que la migración de un motor a otro genere cambios significativos en nuestro código, se recomienda hacer uso del ORM como tal, crear la conexión de base de datos, crear los modelos de las tablas y los queries necesarios, con esto podremos asegurarnos que nuestra aplicación podrá mudarse de motor de base de datos con los cambios mínimos.

En el próximo post estaremos creando un ejemplo donde se incluyan el código SQL y una consulta con el ORM.

Top comments (0)