
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"