
Estrai una fetta del tuo database di produzione per riprodurre bug in locale. Punta dbslice a un record, segue le chiavi esterne e ti fornisce un subset completo e importabile.
Estrai sottoinsiemi minimi e referenzialmente integri del database per lo sviluppo locale e il debug.
Copiare l'intero database di produzione sulla propria macchina non è fattibile. Ma riprodurre un bug spesso richiede di avere esattamente i dati che lo hanno causato. dbslice risolve questo problema estraendo solo i record di cui hai bisogno, seguendo le relazioni di chiave esterna per garantire l'integrità referenziale.
# Installazione globale
uv tool install dbslice # oppure: pip install dbslice
# Estrai un ordine e tutti i record correlati
dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sql
# Importa nel database locale
psql -d localdb < subset.sql
| Database | Stato |
|---|---|
| PostgreSQL | Supporto completo |
| MySQL | Pianificato (non ancora implementato) |
| SQLite | Pianificato (non ancora implementato) |
# Installazione con uv (consigliato)
uv add dbslice
# Prova senza installare
uvx dbslice --help
# Oppure con pip
pip install dbslice
# Estrai per chiave primaria
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"
# Estrai con clausola WHERE
dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"
# Semi multipli
dbslice extract postgres://localhost/db \
--seed "orders.id=100" \
--seed "orders.id=101"
# Limita profondità (predefinito: 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2
# Direzione: up (solo genitori), down (solo figli), both (predefinito)
dbslice extract postgres://... --seed "orders.id=1" --direction up
# Anonimizza automaticamente i campi sensibili rilevati
dbslice extract postgres://... --seed "users.id=1" --anonymize
# Oscura campi aggiuntivi
dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"
Mappa visivamente le colonne, applica profili di conformità e genera una configurazione pronta all'uso, il tutto da un'interfaccia browser locale.
dbslice map postgres://localhost/myapp
# Porta personalizzata
dbslice map postgres://localhost/myapp --port 8888
# Funziona anche con uvx (senza installazione)
uvx dbslice map postgres://localhost/myapp
| Mappa le colonne alle regole di anonimizzazione | Genera ed esporta la configurazione |
![]() | ![]() |
Esegue su 127.0.0.1:9473 con un token di sessione monouso — nessun dato lascia la tua macchina. Applica profili GDPR, HIPAA o PCI-DSS con un clic, rivedi cosa viene mascherato, poi scarica il YAML.
# HIPAA Safe Harbor — maschera automaticamente tutti i 18 tipi di identificatori
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict
# Profili multipli + manifest di audit
dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql
# Produce subset.sql + subset.manifest.json
# SQL (predefinito)
dbslice extract postgres://... --seed "orders.id=1" --output sql
# Fixture 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/
Per relazioni non definite nello schema del database (Django GenericForeignKeys, relazioni implicite):
# dbslice.yaml
database:
url: postgres://localhost:5432/myapp
virtual_foreign_keys:
- source_table: notifications
source_columns: [object_id]
target_table: orders
description: "FK generica verso orders tramite ContentType"
- source_table: audit_log
source_columns: [user_id]
target_table: users
description: "FK implicita senza vincolo DB"
dbslice extract --config dbslice.yaml --seed "users.id=1"
dbslice inspect postgres://localhost/myapp
# Genera configurazione dal database
dbslice init postgres://localhost/myapp --out-file dbslice.yaml
# Utilizza configurazione
dbslice extract --config dbslice.yaml --seed "orders.id=12345"
| Caratteristica | dbslice | Jailer | Greenmask | slice-db |
|---|---|---|---|---|
| Linguaggio | Python | Java | Go | Ruby |
| Configurazione | Zero-config | Richiede file modello | Config richiesta | YAML manuale |
| Tempo di setup | Secondi | Ore | Medio | Medio |
| Anonimizzazione | Integrata (Faker) | Basata su plugin | Transformer avanzati | Non disponibile |
| Profili di conformità | GDPR, HIPAA, PCI-DSS | Nessuno | Nessuno | Nessuno |
| Interfaccia di mappatura colonne | Integrata (locale) | Nessuna | Nessuna | Nessuna |
| Scansione valori PII | Due fasi (pre/post mascheramento) | Nessuna | Nessuna | Nessuna |
| Subsetting | Traversal FK | Traversal FK | Limitato | Traversal FK |
| Formati di output | SQL, JSON, CSV | SQL, XML, CSV | SQL | Solo SQL |
| Gestione cicli | Automatica | Config manuale | N/A | Manuale |
| Streaming | Integrato | Configurabile | Integrato | Non disponibile |
| Manutenzione | Attiva | Attiva | Attiva | Non mantenuto |
dbslice è l'opzione Python leggera e senza configurazione: installa ed estrai in meno di un minuto.
git clone https://github.com/nabroleonx/dbslice.git
cd dbslice
uv sync --dev
uv run pytest
MIT