Peewee – ORM légère et performante

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations

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