À l'ancienne, pour parler à une base de données, on écrivait du SQL brut :
SELECT * FROM users WHERE nom = 'Dupont'
C'est bien, mais :
- C'est verbeux.
- Si tu changes de base de données (ex: tu passes de SQLite à PostgreSQL), tu dois réécrire certaines requêtes.
- Tu risques des failles de sécurité (Injection SQL) si tu ne fais pas attention.
La solution : L'ORM (Object Relational Mapper)
Un ORM permet de manipuler la base de données comme si on manipulait des objets Python.
- Une Table devient une Classe.
- Une Ligne devient une Instance de cette classe.
- Une Colonne devient un Attribut.
Exemple :
Au lieu de :
INSERT INTO users (name, email) VALUES ('Alice', 'alice@mail.com');
On écrit en Python :
alice = User(name='Alice', email='alice@mail.com')
db.session.add(alice)
db.session.commit()
C'est plus lisible, plus sûr, et ça marche avec n'importe quelle base de données (SQLite, MySQL, Postgres...).
L'ORM star de Python s'appelle SQLAlchemy. Et pour Flask, on utilise l'extension Flask-SQLAlchemy qui simplifie la configuration.
Installation
pip install flask-sqlalchemy