{"id":37656289,"url":"https://github.com/osvaldomx/pyntegritydb","last_synced_at":"2026-01-16T11:42:27.276Z","repository":{"id":310013801,"uuid":"1038305791","full_name":"osvaldomx/pyntegritydb","owner":"osvaldomx","description":"Herramienta de línea de comandos para analizar y medir la calidad de la integridad referencial en bases de datos relacionales.","archived":false,"fork":false,"pushed_at":"2025-08-22T18:20:44.000Z","size":129,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-21T16:55:21.276Z","etag":null,"topics":["data-quality","database","integrity","referential-integrity","sql","validator"],"latest_commit_sha":null,"homepage":"https://pyntegritydb.readthedocs.io/es/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osvaldomx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-15T00:51:03.000Z","updated_at":"2025-08-22T18:20:47.000Z","dependencies_parsed_at":"2025-08-15T07:12:18.232Z","dependency_job_id":null,"html_url":"https://github.com/osvaldomx/pyntegritydb","commit_stats":null,"previous_names":["osvaldomx/pyntegritydb"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/osvaldomx/pyntegritydb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvaldomx%2Fpyntegritydb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvaldomx%2Fpyntegritydb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvaldomx%2Fpyntegritydb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvaldomx%2Fpyntegritydb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osvaldomx","download_url":"https://codeload.github.com/osvaldomx/pyntegritydb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvaldomx%2Fpyntegritydb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-quality","database","integrity","referential-integrity","sql","validator"],"created_at":"2026-01-16T11:42:27.200Z","updated_at":"2026-01-16T11:42:27.271Z","avatar_url":"https://github.com/osvaldomx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyntegritydb\n\n[![PyPI version](https://badge.fury.io/py/pyntegritydb.svg)](https://badge.fury.io/py/pyntegritydb)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Documentation Status](https://readthedocs.org/projects/pyntegritydb/badge/?version=latest)](https://pyntegritydb.readthedocs.io/es/latest/)\n[![Python versions](https://img.shields.io/pypi/pyversions/pyntegritydb)](https://pypi.org/project/pyntegritydb/)\n[![Build Status](https://github.com/osvaldomx/pyntegritydb/actions/workflows/python-package.yml/badge.svg)](https://github.com/osvaldomx/pyntegritydb/actions)\n[![codecov](https://codecov.io/github/osvaldomx/pyntegritydb/graph/badge.svg?token=6VABJQKLEF)](https://codecov.io/github/osvaldomx/pyntegritydb)\n\n\n**pyntegritydb** es una herramienta de línea de comandos para analizar y medir la calidad de la integridad referencial en bases de datos relacionales. Basada en el paper académico [\"Referential Integrity Quality Metrics\"](https://www2.cs.uh.edu/~ordonez/pdfwww/w-2008-DSS-refint.pdf), la biblioteca te ayuda a diagnosticar rápidamente relaciones rotas o \"huérfanas\" en tu esquema.\n\n\n\n---\n## Características Principales\n\n* **Análisis Dual**: Mide tanto la **Completitud** (filas huérfanas) como la **Consistencia** (datos desnormalizados incorrectos).\n* **Sistema de Alertas**: Define umbrales de calidad en un archivo `config.yml` y recibe alertas si tus datos no cumplen con los estándares.\n* **Soporte Multi-DB**: Compatible con cualquier base de datos que soporte SQLAlchemy (PostgreSQL, MySQL, SQLite, etc.).\n* **Reportes Flexibles**: Genera reportes en múltiples formatos: tabla para la consola (`cli`), `json` o `csv`.\n* **Visualización de Esquema**: Crea un mapa visual de la salud de tus relaciones con el flag `--visualize`.\n\n---\n## Instalación\n\nInstala `pyntegritydb` directamente desde PyPI:\n\n```bash\npip install pyntegritydb\n```\n\n---\n## Guía de Inicio Rápido\n\nEjecuta un análisis completo, genera un reporte en JSON y un mapa visual con un solo comando.\n\n### 1. Crea tu Archivo de Configuración\n\n**Crea un archivo `config.yml`** (ver [Guía de Uso Completa](https://pyntegritydb.readthedocs.io/) para más detalles).\n\nEn tu proyecto, crea un archivo `config.yml`:\n\n```yaml\n# config.yml\nthresholds:\n  default:\n    validity_rate: 0.99 # Al menos 99% de las FKs deben ser válidas\n    \n  tables:\n    orders:\n      validity_rate: 1.0 # La tabla 'orders' debe ser perfecta\n\nconsistency_checks:\n  orders: \n    - on_fk: [\"user_id\"]\n      attributes:\n        customer_name: name\n```\n\n### 2. Ejecuta el Análisis\n\nUsa el comando `pyntegritydb` apuntando a tu base de datos y a tu archivo de configuración.\n\n```bash\npyntegritydb \"postgresql://user:pass@host/db\" \\\n      --config config.yml \\\n      --format json \\\n      --output-file report.json \\\n      --visualize \\\n      --output-image schema_health.png\n```\n\nEsto generará dos archivos: `report.json` con los resultados detallados y `schema_health.png` con el mapa visual de tu base de datos.\n\n\n### 3. Interpreta el Reporte\n\n`pyntegritydb` generará un reporte completo en tu consola, mostrando primero las alertas, y luego los análisis detallados.\n\n```\n🚦 Reporte de Alertas 🚦\n=========================\n- ALERTA [Completitud]: La tabla 'orders' viola el umbral de 'validity_rate'. Esperado \u003e= 100.00%, Obtenido = 98.50%\n\n### Reporte de Completitud (Filas Huérfanas) ###\n+-----------------+------------------+-----------------+-----------------+-------------+\n| Tabla de Origen | Tabla de Destino | Tasa de Validez | Filas Huérfanas | Total Filas |\n+=================+==================+=================+=================+=============+\n| orders          | users            | 98.50%          | 15              | 1000        |\n+-----------------+------------------+-----------------+-----------------+-------------+\n...\n```\n---\n## Documentación\n\nPara una guía detallada, tutoriales y la referencia completa de la API, visita nuestra documentación oficial en **[pyntegritydb.readthedocs.io](https://pyntegritydb.readthedocs.io/)**.\n\n---\n## Desarrollo\n\nSi quieres contribuir al proyecto, sigue estos pasos:\n\n1.  **Clona el repositorio:**\n    ```bash\n    git clone [https://github.com/tu_usuario/pyntegritydb.git](https://github.com/tu_usuario/pyntegritydb.git)\n    cd pyntegritydb\n    ```\n\n2.  **Crea y activa un entorno virtual:**\n    ```bash\n    python3 -m venv venv\n    source venv/bin/activate\n    ```\n\n3.  **Instala las dependencias en modo editable:**\n    ```bash\n    pip install -e \".[dev]\" \n    # (Necesitarás definir los 'dev' extras en pyproject.toml para pytest, etc.)\n    ```\n4.  **Ejecuta las pruebas:**\n    ```bash\n    pytest\n    ```\n\n---\n## Licencia\n\nEste proyecto está bajo la Licencia MIT. Consulta el archivo `LICENSE` para más detalles.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosvaldomx%2Fpyntegritydb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosvaldomx%2Fpyntegritydb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosvaldomx%2Fpyntegritydb/lists"}