Web Analytics

dbslice

⭐ 140 stars Spanish by nabroleonx

logo de dbslice

dbslice

Versión PyPI Licencia: MIT Python 3.10+

Extrae subconjuntos mínimos y referencialmente íntegros de bases de datos para desarrollo local y depuración.

El Problema

Copiar toda una base de datos de producción a tu máquina es inviable. Pero reproducir un error a menudo requiere tener exactamente los datos que lo causaron. dbslice resuelve esto extrayendo solo los registros que necesitas, siguiendo las relaciones de claves foráneas para asegurar la integridad referencial.

dbslice — semilla a subconjunto

Inicio Rápido

# 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

Características

Soporte de base de datos

| Base de datos | Estado | |---------------|------------------------| | PostgreSQL | Totalmente soportado | | MySQL | Planificado (aún no implementado) | | SQLite | Planificado (aún no implementado) |

Instalación

# Install with uv (recommended)
uv add dbslice

Try without installing

uvx dbslice --help

Or with pip

pip install dbslice

Uso

Extracción Básica

# 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"

Recorrido de Control

# 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

Anonimización

# 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"

Interfaz de Mapeo de Columnas

Mapee columnas visualmente, aplique perfiles de cumplimiento y genere una configuración lista para usar, todo desde una interfaz local en el navegador.

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
Asignar columnas a reglas de anonimización Generar y exportar configuración
Asignación de columnas Configuración generada

Se ejecuta en 127.0.0.1:9473 con un token de sesión de un solo uso — ningún dato sale de tu máquina. Aplica perfiles GDPR, HIPAA o PCI-DSS con un solo clic, revisa lo que se enmascara y luego descarga el YAML.

Perfiles de cumplimiento

# 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

Formatos de salida

# 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/

Claves Foráneas Virtuales

Para relaciones no definidas en el esquema de la base de datos (Django GenericForeignKeys, relaciones implícitas):

# 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"

Inspeccionar esquema

dbslice inspect postgres://localhost/myapp

Archivo de Configuración

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

Use config

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

Cómo Funciona

Comparación

| Característica | dbslice | Jailer | Greenmask | slice-db | |---------------|---------|--------|-----------|----------| | Lenguaje | Python | Java | Go | Ruby | | Configuración | Sin configuración | Requiere archivo de modelo | Requiere configuración | YAML manual | | Tiempo de instalación | Segundos | Horas | Medio | Medio | | Anonimización | Integrada (Faker) | Basada en plugins | Transformadores avanzados | No disponible | | Perfiles de cumplimiento | GDPR, HIPAA, PCI-DSS | Ninguno | Ninguno | Ninguno | | UI para mapeo de columnas | Integrada (local) | Ninguna | Ninguna | Ninguna | | Escaneo de valores PII | Dos fases (pre/post máscara) | Ninguno | Ninguno | Ninguno | | Subconjunto | Recorrido FK | Recorrido FK | Limitado | Recorrido FK | | Formatos de salida | SQL, JSON, CSV | SQL, XML, CSV | SQL | Solo SQL | | Manejo de ciclos | Automático | Configuración manual | N/A | Manual | | Streaming | Integrado | Configurable | Integrado | No disponible | | Mantenimiento | Activo | Activo | Activo | Sin mantenimiento |

dbslice es la opción ligera en Python sin configuración: instala y extrae en menos de un minuto.

Desarrollo

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 ---