Table des matières

, , , ,

:TODO_DOCUPDATE:

L'extension Flask-SQLAlchemy

A propos de SQLAlchemy

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.

Installation

Pour pouvoir utiliser l'extension, installer le module Flask-SQLAlchemy

# Dans votre environnement virtuel
pip install Flask-SQLAlchemy

Options de configuration

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.

Types de champs usuels

source : Les types de données (docs.sqlalchemy.org)

Réordonner les enregistrements

Ici on récupères tous les enregistrements en spécifiant l'ordre

Utiliser Clause WHERE

>>> # 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 >]

Définition des associations

Les différentes associations entre tables sont abordées dans les notes suivantes :

Traitement des erreurs

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)}")

Références