jueves, 13 de marzo de 2025

馃憠 Conectando Flask con PostgreSQL para Aplicaciones Web en Producci贸n

En el post anterior, desplegamos nuestra aplicaci贸n Flask con SQLite. Sin embargo, para proyectos m谩s grandes, PostgreSQL es una mejor opci贸n.

Hoy aprender谩s:
✔️ Por qu茅 usar PostgreSQL en vez de SQLite
✔️ C贸mo conectar Flask con PostgreSQL
✔️ Migrar datos de SQLite a PostgreSQL
✔️ Ejemplo paso a paso con SQLAlchemy

馃搶 Al final del tutorial, podr谩s manejar bases de datos PostgreSQL en Flask.


1️⃣ ¿Por qu茅 Usar PostgreSQL en Producci贸n?

馃搶 Diferencias entre SQLite y PostgreSQL:

Caracter铆sticaSQLitePostgreSQL
Uso recomendadoApps peque帽asProyectos grandes
Manejo de datosLocal (archivo)Cliente-servidor
ConcurrenciaLimitadaAlta escalabilidad
Soporte de usuariosNoS铆
Integraci贸n con la nubeNo recomendadaIdeal para producci贸n

馃敼 Usamos PostgreSQL cuando necesitamos:
Alta concurrencia (m煤ltiples usuarios accediendo a la base de datos).
Escalabilidad (mejor rendimiento en grandes vol煤menes de datos).
Despliegue en producci贸n con plataformas en la nube.


2️⃣ Instalar PostgreSQL y Crear una Base de Datos

馃搶 Si no tienes PostgreSQL, inst谩lalo:

馃敼 En Linux (Ubuntu/Debian):

sudo apt update && sudo apt install postgresql postgresql-contrib

馃敼 En Windows:
Descarga desde postgresql.org e instala.

馃搶 Para acceder a PostgreSQL en la terminal:

sudo -i -u postgres
psql

馃搶 Crea una base de datos llamada mi_app:

CREATE DATABASE mi_app;

馃搶 Crea un usuario y otorga permisos:

CREATE USER mi_usuario WITH PASSWORD 'mi_clave';
GRANT ALL PRIVILEGES ON DATABASE mi_app TO mi_usuario;

La base de datos PostgreSQL est谩 lista para usarse con Flask.


3️⃣ Conectar Flask con PostgreSQL

Usaremos SQLAlchemy, el ORM de Flask, para manejar PostgreSQL.

馃搶 Instala las dependencias:

pip install flask flask-sqlalchemy psycopg2-binary

馃搶 Configura Flask para conectarse a PostgreSQL:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # Configurar PostgreSQL en Flask app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://mi_usuario:mi_clave@localhost/mi_app" app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False db = SQLAlchemy(app) @app.route("/") def home(): return "Conexi贸n exitosa con PostgreSQL" if __name__ == "__main__": app.run(debug=True)

馃搶 Explicaci贸n:
SQLALCHEMY_DATABASE_URI → Define la conexi贸n con PostgreSQL.
db = SQLAlchemy(app) → Inicializa SQLAlchemy en Flask.

馃搶 Ejecuta la aplicaci贸n:

python app.py

Si visitas http://127.0.0.1:5000/ y ves "Conexi贸n exitosa con PostgreSQL", todo est谩 funcionando.


4️⃣ Migrar Datos de SQLite a PostgreSQL

Si tienes datos en SQLite, puedes migrarlos a PostgreSQL f谩cilmente.

馃搶 Pasos para migrar:

1️⃣ Exportar datos desde SQLite:

sqlite3 mi_base.db .dump > backup.sql

2️⃣ Convertir el formato de SQLite a PostgreSQL:
Abre backup.sql en un editor de texto y reemplaza:

  • "AUTOINCREMENT" por "SERIAL"
  • INSERT INTO "tabla" por INSERT INTO tabla

3️⃣ Importar datos en PostgreSQL:

psql -U mi_usuario -d mi_app -f backup.sql

Los datos ahora est谩n en PostgreSQL y listos para usarse con Flask.


5️⃣ Crear una Tabla y Manipular Datos con SQLAlchemy

馃搶 C贸digo para definir y manipular datos en PostgreSQL con SQLAlchemy:

class Usuario(db.Model):
id = db.Column(db.Integer, primary_key=True) nombre = db.Column(db.String(100), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) # Crear la base de datos y la tabla with app.app_context(): db.create_all()

馃搶 Insertar datos en PostgreSQL desde Flask:

nuevo_usuario = Usuario(nombre="Jos茅", email="jose@example.com")
db.session.add(nuevo_usuario) db.session.commit()

馃搶 Consultar datos en PostgreSQL:

usuarios = Usuario.query.all()
for usuario in usuarios: print(usuario.nombre, usuario.email)

PostgreSQL ahora est谩 completamente integrado con Flask.


馃殌 Conclusi贸n

PostgreSQL es m谩s potente y escalable que SQLite para producci贸n.
SQLAlchemy facilita la conexi贸n entre Flask y PostgreSQL.
Migrar datos de SQLite a PostgreSQL es simple con .dump.

馃搶 Pr贸ximo post: Ejercicios pr谩cticos con Flask y PostgreSQL.

馃搨 C贸digo disponible en mi GitHub: github.com/josecodetech

馃帴 Aprende con mis videos en YouTube: https://www.youtube.com/@josecodetech/

馃挰 ¿Prefieres SQLite o PostgreSQL? Cu茅ntamelo en los comentarios.



No hay comentarios:

Publicar un comentario

Se procedera a revision para su pronta publicacion en caso de que no incumpla las normas de blogger.