SQLAlchemy est un ORM (Object-Relational Mapping) il permet de traduire les objets Python en données pouvant être enregistrées dans un SGBD externe.
Pour pouvoir utiliser l'extension, installer le module Flask-SQLAlchemy
# Dans votre environnement virtuel pip install Flask-SQLAlchemy
Lors de la phase de développement ou pendant les tests, il peut être utile d'utiliser une base de donnée SQLite en RAM seulement (pour éviter les écritures sur disque).
Pour cela on définit la valeur de la variable de configuration SQLALCHEMY_DATABASE_URI comme indiqué ci-dessous :
# Pour utiliser une base SQLite en mémoire l'URL doit être vide app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite://'
Il peut être également utile d' afficher les requêtes produites par l'ORM.
Ici on récupères tous les enregistrements en spécifiant l'ordre
>>> # Récupère l'enregistrement dont le nom est 'memo' >>> mc = MarkerCategory.query.where(MarkerCategory.name == 'memo').all() >>> mc [<MarkerCategory id=2 name="memo" builtin=True icon=/static/img/notepad_9021656_icon.png marker_icon=None >]
Les différentes associations entre tables sont abordées dans les notes suivantes :
from sqlalchemy.exc import IntegrityError, OperationalError ... try: # Code SQLAlchemy susceptible de lever une exception db.session.commit() except (IntegrityError, OperationalError) as e: # Traitement des exceptions db.session.rollback() print(f"An error occurred: {str(e)}")