Web Analytics

dbslice

⭐ 140 stars French by nabroleonx

logo dbslice

dbslice

Version PyPI Licence : MIT Python 3.10+

Extraire des sous-ensembles minimaux et référentiellement intacts de bases de données pour le développement local et le débogage.

Le problème

Copier une base de données de production entière sur votre machine est infaisable. Mais reproduire un bug nécessite souvent d’avoir les données exactes qui l’ont causé. 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.

dbslice — de la source au sous-ensemble

Démarrage rapide

# Install globally
uv tool install dbslice   # or: pip install dbslice

Extract an order and all related records

dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sql

Import into local database

psql -d localdb < subset.sql

Fonctionnalités

Support des bases de données

| Base de données | Statut | |-----------------|----------------------------| | PostgreSQL | Entièrement supporté | | MySQL | Prévu (pas encore implémenté) | | SQLite | Prévu (pas encore implémenté) |

Installation

# Install with uv (recommended)
uv add dbslice

Try without installing

uvx dbslice --help

Or with pip

pip install dbslice

Utilisation

Extraction de base

# Extract by primary key
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"

Extract with WHERE clause

dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"

Multiple seeds

dbslice extract postgres://localhost/db \ --seed "orders.id=100" \ --seed "orders.id=101"

Parcours de Contrôle

# Limit depth (default: 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2

Direction: up (parents only), down (children only), both (default)

dbslice extract postgres://... --seed "orders.id=1" --direction up

Anonymisation

# Auto-anonymize detected sensitive fields
dbslice extract postgres://... --seed "users.id=1" --anonymize

Redact additional fields

dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"

Interface de mappage des colonnes

Mappez les colonnes visuellement, appliquez des profils de conformité, et générez une configuration prête à l'emploi — le tout depuis une interface locale dans le navigateur.

dbslice map postgres://localhost/myapp

Custom port

dbslice map postgres://localhost/myapp --port 8888

Also works with uvx (no install needed)

uvx dbslice map postgres://localhost/myapp
Associer les colonnes aux règles d’anonymisation Générer et exporter la configuration
Mapping des colonnes Configuration générée

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 GDPR, HIPAA ou PCI-DSS en un clic, vérifiez ce qui est masqué, puis téléchargez le YAML.

Profils de conformité

# HIPAA Safe Harbor — auto-masks all 18 identifier types
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict

Multiple profiles + audit manifest

dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql

Produces subset.sql + subset.manifest.json

Formats de sortie

# SQL (default)
dbslice extract postgres://... --seed "orders.id=1" --output sql

JSON fixtures

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/

Clés étrangères virtuelles

Pour les relations non définies dans le schéma de la base de données (GenericForeignKeys de 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: "Generic FK to orders via ContentType"

  • source_table: audit_log
source_columns: [user_id] target_table: users description: "Implicit FK without DB constraint"

dbslice extract --config dbslice.yaml --seed "users.id=1"

Inspecter le schéma

dbslice inspect postgres://localhost/myapp

Fichier de configuration

# Generate config from database
dbslice init postgres://localhost/myapp --out-file dbslice.yaml

Use config

dbslice extract --config dbslice.yaml --seed "orders.id=12345"

Comment ça fonctionne

Comparaison

| Fonctionnalité | dbslice | Jailer | Greenmask | slice-db | |----------------|---------|--------|-----------|----------| | Langage | Python | Java | Go | Ruby | | Configuration | Zéro-config | Nécessite fichier modèle | Configuration requise | YAML manuel | | Temps d’installation | Secondes | Heures | Moyen | Moyen | | Anonymisation | Intégrée (Faker) | Basée plugin | Transformateurs avancés | Non disponible | | Profils de conformité | RGPD, HIPAA, PCI-DSS | Aucun | Aucun | Aucun | | Interface mappage colonnes | Intégrée (locale) | Aucune | Aucune | Aucune | | Scan valeurs PII | Deux phases (pré/post masque) | Aucun | Aucun | Aucun | | Sous-ensemble | Parcours FK | Parcours FK | Limité | Parcours FK | | Formats de sortie | SQL, JSON, CSV | SQL, XML, CSV | SQL | SQL seulement | | Gestion des cycles | Automatique | Configuration manuelle | N/A | Manuel | | Streaming | Intégré | Configurable | Intégré | Non disponible | | Maintenance | Active | Active | Active | Non maintenue |

dbslice est l’option Python légère, zéro-config : installez et extrayez en moins d’une minute.

Développement

git clone https://github.com/nabroleonx/dbslice.git
cd dbslice
uv sync --dev
uv run pytest

License

MIT

--- Tranlated By Open Ai Tx | Last indexed: 2026-07-19 ---