-
Crear carpeta y abrirla con vscode
-
Crear archivo Pipfile
-
Crear y activar entorno virtual para trabajar, desde el terminal ejecutar
pipenv shell
- Instalar los siguientes modulos:
pipenv install flask flask-migrate flask-sqlalchemy flask-cors python-dotenv psycopg2-binary
- Crear el archivo .env en la carpeta principal y agregar los siguiente
DATABASEURI="postgresql+psycopg2://postgres:postgres@localhost:5432/nombre-de-tu-base-de-datos"
-
Crear la carpeta src/ y dentro crear dos archivos uno llamado app.py y un archivo llamado models.py
-
En el archivo models.py agregar las siguientes lineas de codigo:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
- En el archivo app.py agregar las siguientes importaciones
import os
from flask import Flask, jsonify
from flask_migrate import Migrate
from flask_cors import CORS
from dotenv import load_dotenv
from models import db
- Cargar las variables de entorno del archivo .env
load_dotenv() # cargar las variables de entorno
- Instanciar una variable de Flask
app = Flask(__name__)
- Configurar parametros de opciones de flask
app.config['DEBUG'] = True # Permite ver los errores
app.config['ENV'] = 'development' # Activa el servidor en modo desarrollo
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASEURI') # Leemos la url de conexion a la base de datos
- Vincular el archivo models.py a nuestro archivo app.py
db.init_app(app)
- Habilitar los comandos para crear las migraciones
Migrate(app, db) # db init, db migrate, db upgrade, db downgrade
- Crear modelo de ejemplo en el archivo models.py:
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(120), nullable=False, unique=True)
password = db.Column(db.String(120), nullable=False)
- Habilitar el comando flask en el terminal (flask):
windows
SET FLASK_APP=src/app.py
Linux o Mac
export FLASK_APP=src/app.py
- Ejecutar los comandos de las migraciones
Crear la carpeta migrations esto es solo la primera vez
flask db init
Crear las migraciones
flask db migrate
Generar las migraciones en la base de datos
flask db upgrade
- Crear endpoint principal
@app.route('/')
def main():
return jsonify({ "status": "Server Up"}), 200
- Validamos nuestra aplicacion
if __name__ == '__main__':
app.run()
- Iniciar nuestra app desde el terminal ("python3" si estoy en maco o linux, "python" si estoy en windows)
python src/app.py