Remplissage des tables
avec des données fictives générées avec Faker ou Mockaroo
Notions théoriques
Lorsqu’on développe une application utilisant une base de données relationnelle, il est essentiel de tester avec des données représentatives du monde réel.
Pour cela, il est possible d’utiliser des générateurs de données fictives, tels que :
- Faker (librairie dans plusieurs langages) https://faker.readthedocs.io/
- Mockaroo (outil en ligne) https://mockaroo.com/
Ces outils permettent de créer des jeux de données crédibles, structurés, et prêts à être insérés dans une base de données SQL.
Pourquoi générer des données fictives automatiquement ?
- Pour gagner du temps et éviter de saisir manuellement des dizaines de lignes.
- Pour simuler des cas réels avec des noms, emails, messages, dates, etc.
- Pour tester les performances et la robustesse du système.
- Pour respecter la vie privée en évitant d’utiliser des données personnelles.
Présentation de Faker
Faker est une librairie disponible en Python, JavaScript, PHP, etc.
Faker permet de générer :
- des noms, prénoms, emails réalistes,
- des UUID,
- des dates aléatoires,
- des phrases ou paragraphes.
Site : https://faker.readthedocs.io/
Exemple en Python :
from faker import Faker
fake = Faker()
print(fake.name()) # "Jean Dupont"
print(fake.email()) # "jean.dupont@example.com"
print(fake.uuid4()) # "b4e6c4c8-7afd-4e2e-8c1d-0c8b7f3e3c6d"
print(fake.text()) # "C’est un fait bien connu que..."
Il est possible de générer des centaines de lignes en quelques secondes avec une boucle.
Présentation de Mockaroo
Mockaroo est un site web permettant de générer des jeux de données et de les exporter en :
- CSV,
- SQL (INSERT),
- JSON,
- Excel.
Site : https://mockaroo.com
Fonctionnalités utiles :
- Personnalisation des champs (nom, email, UUID, date…),
- Choix du format de sortie (SQL, JSON, etc.),
- Génération de 1000 lignes gratuitement.
Exemple pratique
Il est possible de générer des données fictives avec Mockaroo, puis de les insérer dans Supabase via DBeaver.
Étape 1 : générer des données avec Mockaroo
Aller sur https://mockaroo.com et créer un jeu de données SQL pour la table profiles
:
- id → UUID
- username → Username
- avatar_url → Image URL
- created_at → Date
Exporter au format SQL (INSERT statements) pour PostgreSQL.
Exemple de résultat :
INSERT INTO profiles (id, username, avatar_url, created_at) VALUES
('c3d4a2b2-e8f3-4e4b-9a2d-2f3e4b5c6d7e', 'lucie59', 'https://randomuser.me/api/portraits/women/1.jpg', '2023-08-01'),
('f9a8b7c6-d5e4-4c3b-a2b1-1a2b3c4d5e6f', 'mathis_duval', 'https://randomuser.me/api/portraits/men/2.jpg', '2023-08-02');
Étape 2 : copier les requêtes dans DBeaver
- Ouvrir DBeaver.
- Se connecter à la base Supabase via la connexion enregistrée sous le nom
supabase_super-admin
. - Coller les requêtes SQL générées dans l’éditeur.
- Exécuter.
Étape 3 : générer des classes avec Faker (Python)
from faker import Faker
import uuid
fake = Faker()
for _ in range(5):
name = fake.catch_phrase()
description = fake.text(max_nb_chars=100)
print(f"INSERT INTO classes (id, name, description) VALUES ('{uuid.uuid4()}', '{name}', '{description}');")
Exemple de sortie :
INSERT INTO classes (id, name, description) VALUES ('e5c9a7b1-0f2d-4c3f-a9a7-1e2f3d4c5b6a', 'Système d’authentification sécurisé', 'Une solution moderne pour gérer les accès des utilisateurs.');
Étape 4 : générer des messages
for _ in range(10):
content = fake.sentence()
sender_id = fake.uuid4()
class_id = fake.uuid4()
print(f"INSERT INTO messages (content, sender_id, class_id) VALUES ('{content}', '{sender_id}', '{class_id}');")
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Objectif du TP
À la fin de ce TP, votre base de données Supabase devra contenir des données fictives réalistes dans les tables suivantes :
profiles
user_roles
classes
class_members
messages
Ces données doivent être cohérentes, complètes, et compatibles avec les contraintes définies dans les scripts SQL des séances précédentes.
Vous utiliserez pour cela :
- Mockaroo pour générer des jeux de données prêts à insérer
- Faker (Python) pour produire dynamiquement des INSERT SQL
- DBeaver pour insérer les données dans la base distante en tant que
super-admin