
Extrayez une tranche de votre base de production pour reproduire des bugs localement. Pointez dbslice sur un enregistrement, il suit les clés étrangères et vous donne un sous-ensemble complet et importable.
Extrayez des sous-ensembles de base de données minimaux et intègres sur le plan référentiel pour le développement local et le débogage.
Copier toute une base de données de production sur votre machine est irréalisable. Mais reproduire un bogue nécessite souvent d'avoir les données exactes qui l'ont provoqué. dbslice résout ce problème en extrayant uniquement les enregistrements dont vous avez besoin, en suivant les relations de clés étrangères pour garantir l'intégrité référentielle.
# Installation globale
uv tool install dbslice # ou : pip install dbslice
# Extraire une commande et tous les enregistrements associés
dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sql
# Importer dans la base de données locale
psql -d localdb < subset.sql
| Base de données | Statut |
|---|---|
| PostgreSQL | Entièrement pris en charge |
| MySQL | Planifié (pas encore implémenté) |
| SQLite | Planifié (pas encore implémenté) |
# Installation avec uv (recommandé)
uv add dbslice
# Essai sans installation
uvx dbslice --help
# Ou avec pip
pip install dbslice
# Extraction par clé primaire
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"
# Extraction avec clause WHERE
dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"
# Plusieurs graines
dbslice extract postgres://localhost/db \
--seed "orders.id=100" \
--seed "orders.id=101"
# Limiter la profondeur (par défaut : 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2
# Direction : up (parents uniquement), down (enfants uniquement), both (par défaut)
dbslice extract postgres://... --seed "orders.id=1" --direction up
# Anonymisation automatique des champs sensibles détectés
dbslice extract postgres://... --seed "users.id=1" --anonymize
# Masquage de champs supplémentaires
dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"
Mappez visuellement les colonnes, appliquez des profils de conformité et générez une configuration prête à l'emploi, le tout depuis une interface utilisateur locale dans le navigateur.
dbslice map postgres://localhost/myapp
# Port personnalisé
dbslice map postgres://localhost/myapp --port 8888
# Fonctionne aussi avec uvx (aucune installation nécessaire)
uvx dbslice map postgres://localhost/myapp
| Mapper les colonnes aux règles d'anonymisation | Générer et exporter la configuration |
![]() | ![]() |
S'exécute sur 127.0.0.1:9473 avec un jeton de session unique – aucune donnée ne quitte votre machine. Appliquez les profils RGPD, HIPAA ou PCI-DSS en un clic, examinez ce qui sera masqué, puis téléchargez le YAML.
# HIPAA Safe Harbor – masque automatiquement les 18 types d'identifiants
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict
# Profils multiples + manifeste d'audit
dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql
# Produit subset.sql + subset.manifest.json
# SQL (par défaut)
dbslice extract postgres://... --seed "orders.id=1" --output sql
# Fixtures JSON
dbslice extract postgres://... --seed "orders.id=1" --output json --out-file fixtures/
# CSV
dbslice extract postgres://... --seed "orders.id=1" --output csv --out-file data/
Pour les relations non définies dans le schéma de la base de données (GenericForeignKeys Django, relations implicites) :
# dbslice.yaml
database:
url: postgres://localhost:5432/myapp
virtual_foreign_keys:
- source_table: notifications
source_columns: [object_id]
target_table: orders
description: "Clé étrangère générique vers orders via ContentType"
- source_table: audit_log
source_columns: [user_id]
target_table: users
description: "Clé étrangère implicite sans contrainte en base"
dbslice extract --config dbslice.yaml --seed "users.id=1"
dbslice inspect postgres://localhost/myapp
# Générer la configuration à partir de la base de données
dbslice init postgres://localhost/myapp --out-file dbslice.yaml
# Utiliser la configuration
dbslice extract --config dbslice.yaml --seed "orders.id=12345"
dbslice est l'option légère et sans configuration en Python : installez et extrayez en moins d'une minute.
git clone https://github.com/nabroleonx/dbslice.git
cd dbslice
uv sync --dev
uv run pytest
MIT
| Fonctionnalité | dbslice | Jailer | Greenmask | slice-db |
|---|
| Langage | Python | Java | Go | Ruby |
| Configuration | Zéro config | Nécessite un fichier modèle | Configuration requise | YAML manuel |
| Temps de mise en place | Secondes | Heures | Moyen | Moyen |
| Anonymisation | Intégrée (Faker) | Basée sur des plugins | Transformateurs avancés | Non disponible |
| Profils de conformité | RGPD, HIPAA, PCI-DSS | Aucun | Aucun | Aucun |
| Interface de mappage de colonnes | Intégrée (locale) | Aucune | Aucune | Aucune |
| Analyse de valeur PII | Deux phases (avant/après masquage) | Aucune | Aucune | Aucune |
| Sous-ensemble | Parcours FK | Parcours FK | Limité | Parcours FK |
| Formats de sortie | SQL, JSON, CSV | SQL, XML, CSV | SQL | SQL uniquement |
| Gestion des cycles | Automatique | Configuration manuelle | N/A | Manuelle |
| Streaming | Intégré | Configurable | Intégré | Non disponible |
| Maintenance | Active | Active | Active | Non maintenu |