Superando los Obstáculos de Conexión con PostgreSQL y Flask - Episodio 10

Bug PostgresSQL

Superando los obstáculos de conexión con PostgreSQL y Flask es un eufemismo para no contarte el quebradero de cabeza que me dieron.

¿Sabes de esos momentos que te desesperas?

Pues este fue uno de ellos.

Índice
  1. 📅 Diario de un SaaS: Superando los Obstáculos de Conexión con PostgreSQL y Flask
  2. 🚧 ¿Conectar Flask con PostgreSQL? ¿Qué podría salir mal? ¡Todo!
    1. 🔍 Problema: Una Cadena de Errores Inesperados
  3. 🛠️ La Solución: Desenredando el Caos
  4. 💡 Lecciones Aprendidas
  5. 🚀 Próximo Paso: Construyendo el CRUD para las Piezas del Almacén

📅 Diario de un SaaS: Superando los Obstáculos de Conexión con PostgreSQL y Flask

Así que en este post voy a seguir contándote la aventura loca de querer montar un SaaS.

¿Estoy loco?

A veces lo pienso porque mi background no es de developer ni mucho menos.

Vengo del mundo del Marketing Digital, del Growth Hacking, del Inbound, etc.

De pelearme en estrategia, en táctica y en operativa.

Pero sobre todo, vengo del mundo de los motivados de la vida.

Así que voy a seguir al lío.

🚧 ¿Conectar Flask con PostgreSQL? ¿Qué podría salir mal? ¡Todo!

Cuando empecé a conectar Flask con PostgreSQL, pensé que sería cuestión de copiar y pegar algunas líneas de código de un tutorial.

¡Qué ingenuo!

Lo que parecía una simple configuración, rápidamente se convirtió en una odisea de errores y frustraciones. 😅

Pero...

¿Quién dijo miedo?

Conexión PostgreSQL

🔍 Problema: Una Cadena de Errores Inesperados

La primera señal de problemas fue cuando el servidor decidió no arrancar.

Sin errores visibles, sin pistas.

Solo una pantalla en negro y un silencio digital que gritaba “te has cargado todo”.

Casi lloro, te lo prometo.

Luego, comenzaron a aparecer los errores: misteriosos, impredecibles y, a veces, hasta insultantes.

Y sabes qué?

Lo peor era que aparecían de la nada, justo cuando pensabas que todo iba bien.

NameError: name 'app' is not defined

Era como si Flask se burlara de mí.

¿Cómo no iba a existir app si lo había escrito justo antes?

Lo probé todo: mover la línea de código, reiniciar el servidor, incluso cambiar el nombre de la variable (porque ya estaba dudando de todo).

Al final, descubrí que en Flask el orden importa.

O sea, el orden de las farolas... si afecta al alumbrado, vaya!

Es decir, si declaras app después de iniciar SQLAlchemy, Flask simplemente finge que no existe. 😤

Working outside of application context

Este error era pura maldad.

Obra del diablo.

Este error debería tener inscrito en consola el ERROR 666

Aparecía y desaparecía sin razón aparente, como un poltergeist en mi código.

O sea, no tenía ni idea de qué significaba un “contexto de aplicación” ni por qué necesitaba uno.

ChatGPTé lo máximo.

Probé copiar y pegar ejemplos de StackOverflow, pero solo empeoraba las cosas.

Consejos con la IA con ChatGPT.

Cada intento fallido me hacía sentir como una mota de polvo cósmico en la inmensidad del universo.

Al final, resultó que necesitaba envolver ciertas operaciones en with app.app_context() para que Flask entendiera el estado de la aplicación.

Pero me llevó días de frustración llegar a esa conclusión. 😤

psql no se reconoce

Ah, este fue el golpe final.

O sea, tras horas intentando conectar PostgreSQL, la terminal seguía diciendo que psql no existía.

Reinicié la máquina unas 10 veces antes de darme cuenta de que no había añadido PostgreSQL al PATH de Windows.

Y sí, casi tiro el ordenador por la ventana. 🤦‍♂️ ( y yo detrás

Cada error era un golpe a mi ego que ya estaba mal herido.

¿Me había embarcado en un proyecto demasiado grande?

¿Me creía mucho más listo de lo que era?

Me hizo dudar de mis habilidades y reconsiderar todo el proyecto.

Y enviarlo todo a la mierda!

Fue como si Flask y PostgreSQL se hubieran puesto de acuerdo para humillarme.

Y lo consiguieron. 🐛🔨


🛠️ La Solución: Desenredando el Caos

Después de días de pelea, por fin logré conectar Flask con PostgreSQL.

Pero no fue fácil ni rápido.

Tuve que cambiar mi enfoque y aceptar que necesitaba entender cómo funcionaba Flask desde dentro, en lugar de solo copiar ejemplos de internet o del propio ChatGPT.

Orden Correcto de Inicialización:

Declarar app = Flask(__name__) antes de inicializar db = SQLAlchemy(app).

Aprendí que Flask necesita saber cómo está configurada la aplicación antes de inicializar las extensiones.

No es una cuestión de estilo, sino de funcionamiento interno.

Así que este cambio solucionó el NameError. 💡

Vamoos!

Contextos de Aplicación en Flask

Usar with app.app_context() para envolver operaciones con la base de datos.

Esto fue un giro mental.

O sea, muy loco!

Resulta que Flask crea un “contexto” para cada petición, y si haces operaciones fuera de ese contexto, no tiene ni idea de en qué estado está la aplicación.

Necesité tiempo de freir a ChatGPT para entender esto.

Creía que me iba a coger manía y todo.

Y aún hoy me parece innecesariamente complejo. 😵

Añadiendo PostgreSQL al PATH de Windows

Modificando las variables de entorno para que psql y otros comandos sean reconocidos.

Este fue más sencillo, pero no menos frustrante.

¿Por qué no se añade automáticamente al PATH cuando instalas PostgreSQL?

Es un misterio de la informática. 🤔

Cada solución fue un pequeño triunfo.

Pero lo que más me ayudó fue cambiar mi mentalidad: dejar de luchar contra los errores y empezar a entender por qué ocurrían. 🧠


💡 Lecciones Aprendidas

  • El orden sí importa: En Flask, la secuencia de inicialización define el flujo de la aplicación. No es solo cuestión de estilo, afecta a cómo Flask gestiona rutas, contextos y errores.
  • Contextos de aplicación en Flask: Flask es un framework orientado a peticiones. Cada vez que el servidor recibe una petición, crea un contexto temporal. Si intentas acceder a la base de datos fuera de ese contexto, Flask se pierde. Por eso necesitas envolver operaciones con with app.app_context().
  • Humildad y Paciencia: Esta experiencia me enseñó a aceptar que no sé todo, que hay cosas que requieren tiempo para ser entendidas y que, a veces, el único camino es seguir intentándolo.

🚀 Próximo Paso: Construyendo el CRUD para las Piezas del Almacén

Después de esta batalla épica, estoy listo para el siguiente desafío: implementar CRUD para gestionar piezas en el almacén digital.

No tengo dudas de que surgirán nuevos errores, pero ya estoy preparado mentalmente para lo que venga. 💪😅

O no!

➡️ ¿Alguna vez te enfrentaste a errores que casi te hicieron abandonar un proyecto?

¡Comparte tu drama en los comentarios!

Si quieres conocer otros artículos parecidos a Superando los Obstáculos de Conexión con PostgreSQL y Flask - Episodio 10 puedes visitar la categoría Proyecto-IA.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir