pip install -r requirements.txt
- Set PostgreSQL username & password in
db.env
- Start PostgreSQL server
flask --app project db init
flask --app project db migrate
flask --app project db upgrade
python create_database.py# https://www.sqlite.org/download.html => sqlite-tools-* sqlite3 .\instance\db.sqlite sqlite> .tables user sqlite> .schema user CREATE TABLE user ( id INTEGER NOT NULL, email VARCHAR(100), password VARCHAR(100), name VARCHAR(1000), PRIMARY KEY (id), UNIQUE (email) );
flask --app project run --debug
# https://stackoverflow.com/questions/1420719/powershell-setting-an-environment-variable-for-a-single-command-only
When you upgrade any of your database schema
flask --app project db migrate
flask --app project db upgrade
This will create new migrations/version
and automatically upgrade your database
docker compose up --build
Initialize PostgreSQL
$ docker exec -it flask-usermanagement-app-1 /bin/sh
flask --app project db init
flask --app project db migrate
flask --app project db upgrade
- Adminer: http://localhost:8080/
- System:
PostgreSQL
- Server:
pgsql
- Username:
postgres
- Password:
example
- System:
- App: http://localhost:5000/
- Dockerize
- PostgreSQL
- HTTPS
- Replace password plain hash
All plain hashes are deprecated and will not be supported in Werkzeug 3.0.
Tutorial
Flask
- Application Setup — Flask Documentation (2.3.x) - Application Factory
Python Database
- sqlalchemy/sqlalchemy: The Database Toolkit for Python
- pallets-eco/flask-sqlalchemy: Adds SQLAlchemy support to Flask
- miguelgrinberg/Flask-Migrate: SQLAlchemy database migrations for Flask applications using Alembic
Database Schema
- Database schema for Django User Sessions - DrawSQL
- Database schema for Django Oauth Toolkit - DrawSQL
- Database schema for Django Two Factor Auth - DrawSQL
Database
- PostgreSQL
- SQLite
- adminer - Official Image | Docker Hub
- Multiple Databases with Binds — Flask-SQLAlchemy Documentation (2.x)
CSS Framework
Docker
- Ways to set environment variables in Compose | Docker Documentation
- Services top-level element | Docker Documentation
Others