Bases y archivos de datos

DBReduce

De un volcado del tamaño de producción a un informe de error adjuntable. Reduce una base de datos PostgreSQL a las pocas filas y tablas que todavía reproducen una prueba fallida.

Versión
v0.5.1, 31 oct 2026
Funciona en
Python 3.10–3.15; PostgreSQL 13–18 con pg_dump, pg_restore y psql de la misma versión
Licencia
Apache-2.0

Cómo se ve

dbreduce reduce \
  --database postgresql://localhost/app_bug \
  --oracle 'uv run pytest tests/test_checkout.py::test_negative_total' \
  --match-stdout 'AssertionError: negative total' \
  --confirm 3
Ejemplo del README: un oráculo pytest reconocido por su mensaje de aserción y confirmado tres veces. Escribe dbreduce.min.sql y dbreduce-report.json sin sobrescribir archivos existentes.
Wagtail #9208
Rows:             150,706 -> 3
Tables:           48 -> 1
Failure identity: preserved
Fresh SQL restore: PASS
Resultado del informe de validación del proyecto: un caso de error de Wagtail reducido con un oráculo de aplicación en PostgreSQL 17 y la reducción opcional del esquema.

Qué hace

Proporciona a DBReduce una base PostgreSQL y un comando que falle por un defecto. Elimina filas siguiendo las claves foráneas y las relaciones que declares, y conserva solo los candidatos con el mismo fallo. También puede eliminar tablas completas. El resultado es un archivo SQL pequeño que reproduce el defecto.

Para quién es

  • Desarrolladores que necesitan un caso mínimo para un fallo dependiente de los datos.
  • Mantenedores que reciben informes de errores que solo ocurren en una base ajena.

Limitaciones

  • El oráculo usa una copia desechable, pero las funciones SQL, los disparadores y los servicios externos aún pueden tener efectos secundarios. Usa comandos y volcados de confianza.
  • Necesita un rol de base de datos con CREATEDB.
  • DBReduce no promete un mínimo global; los informes indican cuándo no puede afirmarse la irreducibilidad local.

Usos habituales

Reducir un caso de prueba fallido

Indica una copia de la base y el comando de prueba. Reconoce el fallo por su salida o por un veredicto JSON para no aceptar otro error distinto.

Compartir un caso reproducible

Produce dbreduce.min.sql y un informe con números de filas y tiempos, sin la salida original de la prueba.

Instalar

Última versión estable v0.5.1, publicada el 31 oct 2026. Notas de la versión de v0.5.1. Datos de versiones consultados el 2 nov 2026 en GitHub Releases.

Instalar desde PyPI

uv tool install dbreduce

Página del paquete: pypi.org/project/dbreduce/

Primer uso

  1. Instala la CLI como herramienta independiente:

    uv tool install dbreduce
    dbreduce --help
  2. Comprueba que la prueba lea la URL de la base de DATABASE_URL o DBREDUCE_DATABASE_URL.

  3. Ejecuta dbreduce reduce con una condición que identifique el error y adjunta dbreduce.min.sql al informe del fallo.

Plataformas y cómo se comprobaron

  • PostgreSQL 13–18Se compila y supera las comprobaciones automáticas de CI

    Aislamiento mediante instantáneas por defecto; el backend de clonación es experimental y requiere PostgreSQL 15+.

  • Python 3.10–3.15Se compila y supera las comprobaciones automáticas de CI

    Se instala como herramienta independiente; tu aplicación puede usar cualquier lenguaje.

Las preguntas y los informes de errores van al gestor de incidencias del proyecto. Informa de problemas de seguridad como se describe en su política de seguridad.