1. A proposdes ORM
ORM signifie "Object-Relational Mapping". C'est un concept qui consiste à utiliser une couche d'abstraction pour accéder à une base de données relationnelle depuis un langage de programmation orienté objet.
L'idée derrière ORM est de permettre aux développeurs de travailler avec des objets de leur langage de programmation préféré plutôt qu'avec des requêtes SQL, tout en profitant de la puissance et de la flexibilité des bases de données relationnelles.
2. Fonctionnement d'un ORM
Voici comment fonctionne ORM en général :
Le développeur définit des classes de modèles dans son code, qui représentent les différentes entités de la base de données (par exemple, "utilisateur", "article", "commande", etc.).
L'ORM mappe ces classes de modèles sur des tables de la base de données, en utilisant des annotations ou des fichiers de configuration.
Le développeur peut ensuite utiliser ces classes de modèles pour effectuer des opérations CRUD (create, read, update, delete) sur les données de la base de données, en utilisant des méthodes et des propriétés de ces classes plutôt que des requêtes SQL.
L'ORM se charge de traduire ces opérations en requêtes SQL et de les exécuter sur la base de données.
3. Exemple d'usage d'un ORM
Voici un exemple de code qui utilise l'ORM SQLAlchemy (un des ORM les plus populaires pour Python) pour définir un modèle de base de données et effectuer des opérations CRUD sur celui-ci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # Définition du modèle de base de données Base = declarative_base() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) # Création de l'engine de base de données et de la session engine = create_engine("postgresql://localhost/mydatabase") Session = sessionmaker(bind=engine) session = Session() # Création d'un nouvel utilisateur new_user = User(name="John", age=30) session.add(new_user) session.commit() # Récupération de tous les utilisateurs users = session.query(User).all() print(users) # [<User(id=1, name='John', age=30)>] # Mise à jour de l'utilisateur new_user.age = 31 session.commit() # Suppression de l'utilisateur session.delete(new_user) session.commit() |
- Dans ce code, nous avons d'abord importé les classes nécessaires à partir de sqlalchemy : create_engine pour créer une connexion à la base de données, Column pour définir les colonnes de la table, Integer et String pour indiquer le type de données de chaque colonne, declarative_base pour créer une base de modèles à partir de laquelle nous pouvons définir nos modèles, et sessionmaker et Session pour gérer les transactions avec la base de données.
- Ensuite, nous avons défini une classe User qui hérite de Base et qui définit les colonnes de la table users de la base de données.
- Ensuite, nous avons créé un "engine" de base de données en utilisant create_engine et en spécifiant l'URL de la base de données (ici, une base de données PostgreSQL local). Nous avons ensuite créé une "session" en utilisant sessionmaker et en lui passant l'engine en paramètre.
- Enfin, nous avons utilisé la session pour effectuer des opérations CRUD sur la base de données : nous avons créé un nouvel utilisateur en instanciant la classe User, nous avons utilisé la méthode session.add pour ajouter un nouveau utilisateur.
Younes Derfoufi
CRMEF OUJDA