Connexion via ORM et bibliothèques Python
Dans le domaine de la data science, la manipulation et l’analyse des données passent inévitablement par l’accès à des bases de données. Que ce soit pour interroger des jeux de données, stocker des résultats ou orchestrer des pipelines complexes, l’interfaçage avec des systèmes de gestion de bases de données (SGBD) est une compétence essentielle. Python, grâce à son écosystème riche et mature, offre de nombreuses bibliothèques pour interagir avec les bases de données, que ce soit via des requêtes directes (SQL brut) ou via des ORM (Object Relational Mappers), qui simplifient considérablement l’écriture du code en adoptant une approche orientée objet.
Qu’est-ce qu’un ORM ?
Un ORM (Object-Relational Mapping) est un outil qui permet de manipuler des bases de données relationnelles en utilisant des objets Python…
- SQLAlchemy
- Django ORM
- Peewee
- Tortoise ORM
SQLAlchemy : Le standard incontournable
SQLAlchemy est la bibliothèque ORM la plus utilisée en Python…
from sqlalchemy import create_engine
engine = create_engine('postgresql://user:password@localhost:5432/mydatabase')
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class Utilisateur(Base):
__tablename__ = 'utilisateurs'
id = Column(Integer, primary_key=True)
nom = Column(String)
age = Column(Integer)
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
nouvel_utilisateur = Utilisateur(nom="Alice", age=30)
session.add(nouvel_utilisateur)
session.commit()
Django ORM : Simplicité et intégration
from django.db import models
class Client(models.Model):
nom = models.CharField(max_length=100)
email = models.EmailField()
Client.objects.create(nom="Jean Dupont", email="jean@exemple.com")
clients = Client.objects.all()
Peewee : L’alternative légère
from peewee import *
db = SqliteDatabase('ma_base.db')
class Personne(Model):
nom = CharField()
age = IntegerField()
class Meta:
database = db
db.connect()
db.create_tables([Personne])
Personne.create(nom="Paul", age=29)
Pourquoi utiliser un ORM en Data Science ?
- Modularité : Le code est mieux structuré avec des classes bien définies.
- Portabilité : Changer de base (ex : SQLite → PostgreSQL) devient plus simple.
- Maintenabilité : Moins de duplication, meilleure gestion des erreurs.
- Sécurité : Moins de risques d’injection SQL.
- Interopérabilité : Utilisable avec pandas, FastAPI, Flask, etc.
Connexion via bibliothèques spécialisées
sqlite3
(intégré à Python)psycopg2
(PostgreSQL)pymysql
(MySQL)pyodbc
(ODBC pour MS SQL Server, Oracle, etc.)
import psycopg2
conn = psycopg2.connect(
dbname="ma_base",
user="utilisateur",
password="motdepasse",
host="localhost"
)
cur = conn.cursor()
cur.execute("SELECT * FROM utilisateurs;")
print(cur.fetchall())
conn.close()
Intégration avec Pandas
import pandas as pd
df = pd.read_sql("SELECT * FROM utilisateurs", con=engine)
Conclusion
Choisir entre un ORM ou une bibliothèque plus bas niveau dépend de la complexité de votre projet, du volume de données, et de vos préférences. Pour les projets structurés et collaboratifs, les ORM comme SQLAlchemy ou Django ORM apportent beaucoup de clarté et de robustesse. Pour des scripts rapides ou des prototypes, une connexion directe avec sqlite3
ou pymysql
peut suffire.
Dans tous les cas, la maîtrise des outils de connexion aux bases de données en Python est une compétence essentielle pour tout data scientist. Elle permet d’intégrer les modèles aux systèmes d’information existants et de travailler de manière fluide avec des données réelles, souvent dispersées et volumineuses.