Tu te souviens de db.create_all() ? C'est bien pour commencer, mais c'est nul pour la maintenance.
Pourquoi ? Si tu ajoutes une colonne age à ta table User et que tu relances create_all(), Flask ne fera RIEN car la table existe déjà.
Et si tu supprimes le fichier db, tu perds toutes tes données !
La solution pro : Les Migrations. C'est comme un système de version (Git) pour ta base de données.
Installation
pip install flask-migrate
Configuration
Dans app.py :
from flask_migrate import Migrate
# ... après db = SQLAlchemy(app)
migrate = Migrate(app, db)
Utilisation (Commandes Terminal)
Initialisation (À faire une seule fois au début du projet) :
flask db initÇa crée un dossier
migrations.Créer une migration (À chaque fois que tu modifies tes modèles Python) : Disons que tu ajoutes
age = db.Column(db.Integer)dansUser.flask db migrate -m "Ajout de la colonne age"Flask détecte le changement et crée un script de migration.
Appliquer la migration (Mettre à jour la base réelle) :
flask db upgrade
Si tu as fait une bêtise, tu peux revenir en arrière avec :
flask db downgrade
Avec ça, tu peux faire évoluer ta BDD en production sans perdre de données. Indispensable.