SQLAlchemy soporta múltiples bases de datos SQL además de SQLite. Al ser una capa de abstracción, facilita la creación de aplicaciones que funcionan con diferentes bases de datos. Es común, por ejemplo, usar una base de datos ligera como SQLite durante el desarrollo y luego migrar a una más robusta como PostgreSQL en producción. SQLAlchemy permite cambiar de base de datos sin que esto afecte el código de la aplicación.
Conectores
Dependiendo de la base de datos que desees usar, necesitarás instalar un conector específico que permita la comunicación entre la aplicación y la base de datos. Por ejemplo, para PostgreSQL, el conector más utilizado es psycopg, mientras que para MySQL puedes usar pymysql. Algunos conectores ofrecen características adicionales, como soporte para ejecución asíncrona o mejor rendimiento.
PostgreSQL
PostgreSQL es una base de datos relacional de código abierto muy robusta y ampliamente utilizada en entornos de producción. Es conocida por su flexibilidad, capacidad de extensión y cumplimiento estricto de los estándares SQL. PostgreSQL soporta características avanzadas como el soporte para datos JSON, índices avanzados, transacciones ACID, tipos de datos personalizados, procedimientos almacenados, y un manejo eficiente de datos geoespaciales.
Instalación y configuracion inicial de PostgreSQL
En sistemas Linux, puedes realizar la instalación de PostgreSQL a través del gestor de paquetes. Por ejemplo, en distribuciones basadas en Ubuntu, puedes instalar el servidor de PostgreSQL con el siguiente comando:
sudo apt install postgresql postgresql-contribLuego verifica que el servicio haya sido levantado con el comando:
sudo systemctl status postgresqlSi el servicio no está en ejecución, puedes iniciarlo y asegurarte de que se inicie automáticamente con:
sudo systemctl enable --now postgresqlUna vez instalado, es necesario configurar un rol de usuario para trabajar con PostgreSQL, ya que cada usuario que quiera conectarse y gestionar bases de datos necesita un rol. Puedes crear un rol y una base de datos para tu usuario con los siguientes comandos:
sudo su - postgres -c "createuser -s $(whoami)"
createdb $(whoami)Después de esto, puedes iniciar sesión en PostgreSQL utilizando el cliente de línea de comandos psql.
Interacción con PostgreSQL a través de psql
psql es el cliente de línea de comandos oficial para interactuar con PostgreSQL. A través de él, puedes ejecutar consultas SQL, gestionar bases de datos, usuarios y roles, así como realizar diversas tareas administrativas.
Algunos de los comandos más comunes en psql son:
- Listar todas las bases de datos disponibles:
\l - Conectarte a una base de datos específica:
\c base_de_datos - Listar todas las tablas en una base de datos:
\dt - Para salir de la consola de psql:
\q
Puedes ver la lista completa de comandos con \?.
Además de los comandos específicos de psql, también puedes ejecutar sentencias SQL estándar. Por ejemplo, para crear una tabla en una base de datos, puedes ejecutar:
CREATE TABLE usuarios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100) UNIQUE NOT NULL
);Configuración de PostgreSQL en SQLAlchemy
Una vez que PostgreSQL esté configurado y en funcionamiento, puedes integrarlo fácilmente con tu aplicación SQLAlchemy modificando la URL de conexión. Primero, asegúrate de instalar el conector psycopg:
pip install psycopgO si estás utilizando un proyecto gestionado con uv, puedes agregarlo con:
uv add psycopgLuego, para configurar la conexión en SQLAlchemy, modifica la URL de conexión de la base de datos. Aquí tienes dos ejemplos:
- Para autenticación directa con el usuario del sistema:
postgresql+psycopg:///nombre_base_de_datos - Para autenticación con usuario y contraseña:
postgresql+psycopg://usuario:contraseña@localhost/nombre_base_de_datos