Introduction
La gestion d'une base de données est une étape incontournable dans tout projet moderne. Python propose de nombreuses bibliothèques ORM pour interagir facilement avec les bases SQL. Parmi les plus simples et les plus légères, on trouve Peewee. Idéale pour les petits projets, les scripts et même les microservices.
Peewee – une ORM légère – offre tout le nécessaire pour décrire des modèles, exécuter des requêtes, gérer des transactions et s'intégrer aux frameworks web, le tout avec une courbe d'apprentissage réduite.
Principes de l'ORM et place de Peewee
Qu'est-ce qu'une ORM ?
L'ORM (Object-Relational Mapping) est une technique qui permet de manipuler une base de données à l'aide d'objets du langage de programmation. Au lieu d'écrire du SQL brut, vous créez et manipulez des classes Python, et l'ORM se charge de la traduction en requêtes SQL.
L'ORM offre une abstraction au-dessus du SQL, rendant le code plus lisible et moins sujet aux erreurs. Les principaux avantages :
- Génération automatique des requêtes SQL
- Protection contre les injections SQL
- Portabilité entre différents SGBD
- Manipulation intuitive via des objets Python
Quand choisir Peewee ?
Peewee est un excellent choix dans les cas suivants :
- Vous avez besoin d'un outil simple et léger
- Votre projet est petit ou expérimental
- La rapidité de développement prime sur la configuration
- Pour le prototypage et les petites applications web
- Pour des applications de bureau avec une base locale
Installation et configuration de base
Installer Peewee
L'installation se fait via pip :
pip install peewee
Pour différents SGBD, des paquets supplémentaires sont nécessaires :
# Pour PostgreSQL
pip install psycopg2-binary
# Pour MySQL
pip install PyMySQL
# Pour SQLite (inclus dans Python)
# aucun paquet supplémentaire requis
Connexion à la base de données
Peewee prend en charge plusieurs types de bases :
from peewee import SqliteDatabase, PostgresqlDatabase, MySQLDatabase
# SQLite
db = SqliteDatabase('ma_base.db')
# PostgreSQL
db = PostgresqlDatabase('mabd', user='utilisateur', password='motdepasse', host='localhost', port=5432)
# MySQL
db = MySQLDatabase('mabd', user='utilisateur', password='motdepasse', host='localhost', port=3306)
Création de modèles de données
Modèle de base
from peewee import Model, CharField, DateField, IntegerField, TextField
class BaseModel(Model):
class Meta:
database = db
class Auteur(BaseModel):
nom = CharField(max_length=100)
date_naissance = DateField()
biographie = TextField(null=True)
class Livre(BaseModel):
titre = CharField(max_length=200)
isbn = CharField(max_length=13, unique=True)
pages = IntegerField()
annee_publication = IntegerField()
auteur = ForeignKeyField(Auteur, backref='livres')
Création des tables
db.connect()
db.create_tables([Auteur, Livre])
Types de champs dans Peewee
Types de champs principaux
| Type de champ | Description | Paramètres |
|---|---|---|
| CharField | Chaîne avec limite de longueur | max_length, unique, null |
| TextField | Texte sans limite de longueur | null |
| IntegerField | Nombre entier | null, unique |
| FloatField | Nombre à virgule flottante | null, unique |
| BooleanField | Valeur booléenne | null, default |
| DateField | Date | null, default |
| DateTimeField | Date et heure |