pyntegritydb


Namepyntegritydb JSON
Version 0.3.0 PyPI version JSON
download
home_pageNone
SummaryUna biblioteca para medir la calidad de la integridad referencial en bases de datos relacionales.
upload_time2025-08-17 09:00:43
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT License Copyright (c) 2025 Osvaldo Trujillo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords database integrity data quality sql validator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pyntegritydb

[![PyPI version](https://badge.fury.io/py/pyntegritydb.svg)](https://badge.fury.io/py/pyntegritydb)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Documentation Status](https://readthedocs.org/projects/pyntegritydb/badge/?version=latest)](https://pyntegritydb.readthedocs.io/es/latest/)
[![Python versions](https://img.shields.io/pypi/pyversions/pyntegritydb)](https://pypi.org/project/pyntegritydb/)
[![Build Status](https://github.com/osvaldomx/pyntegritydb/actions/workflows/python-package.yml/badge.svg)](https://github.com/osvaldomx/pyntegritydb/actions)
[![Coverage Status](https://coveralls.io/repos/github/osvaldomx/pyntegritydb/badge.svg?branch=main)](https://coveralls.io/github/osvaldomx/pyntegritydb?branch=main)


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



---
## Características Principales

* **Análisis Dual**: Mide tanto la **Completitud** (filas huérfanas) como la **Consistencia** (datos desnormalizados incorrectos).
* **Sistema de Alertas**: Define umbrales de calidad en un archivo `config.yml` y recibe alertas si tus datos no cumplen con los estándares.
* **Soporte Multi-DB**: Compatible con cualquier base de datos que soporte SQLAlchemy (PostgreSQL, MySQL, SQLite, etc.).
* **Reportes Flexibles**: Genera reportes en múltiples formatos: tabla para la consola (`cli`), `json` o `csv`.
* **Visualización de Esquema**: Crea un mapa visual de la salud de tus relaciones con el flag `--visualize`.

---
## Instalación

Instala `pyntegritydb` directamente desde PyPI:

```bash
pip install pyntegritydb
```

---
## Guía de Inicio Rápido

Ejecuta un análisis completo, genera un reporte en JSON y un mapa visual con un solo comando.

### 1. Crea tu Archivo de Configuración

**Crea un archivo `config.yml`** (ver [Guía de Uso Completa](https://pyntegritydb.readthedocs.io/) para más detalles).

En tu proyecto, crea un archivo `config.yml`:

```yaml
# config.yml
thresholds:
  default:
    validity_rate: 0.99 # Al menos 99% de las FKs deben ser válidas
    
  tables:
    orders:
      validity_rate: 1.0 # La tabla 'orders' debe ser perfecta

consistency_checks:
  orders: 
    - on_fk: ["user_id"]
      attributes:
        customer_name: name
```

### 2. Ejecuta el Análisis

Usa el comando `pyntegritydb` apuntando a tu base de datos y a tu archivo de configuración.

```bash
pyntegritydb "postgresql://user:pass@host/db" \
      --config config.yml \
      --format json \
      --output-file report.json \
      --visualize \
      --output-image schema_health.png
```

Esto generará dos archivos: `report.json` con los resultados detallados y `schema_health.png` con el mapa visual de tu base de datos.


### 3. Interpreta el Reporte

`pyntegritydb` generará un reporte completo en tu consola, mostrando primero las alertas, y luego los análisis detallados.

```
🚦 Reporte de Alertas 🚦
=========================
- ALERTA [Completitud]: La tabla 'orders' viola el umbral de 'validity_rate'. Esperado >= 100.00%, Obtenido = 98.50%

### Reporte de Completitud (Filas Huérfanas) ###
+-----------------+------------------+-----------------+-----------------+-------------+
| Tabla de Origen | Tabla de Destino | Tasa de Validez | Filas Huérfanas | Total Filas |
+=================+==================+=================+=================+=============+
| orders          | users            | 98.50%          | 15              | 1000        |
+-----------------+------------------+-----------------+-----------------+-------------+
...
```
---
## Documentación

Para 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/)**.

---
## Desarrollo

Si quieres contribuir al proyecto, sigue estos pasos:

1.  **Clona el repositorio:**
    ```bash
    git clone [https://github.com/tu_usuario/pyntegritydb.git](https://github.com/tu_usuario/pyntegritydb.git)
    cd pyntegritydb
    ```

2.  **Crea y activa un entorno virtual:**
    ```bash
    python3 -m venv venv
    source venv/bin/activate
    ```

3.  **Instala las dependencias en modo editable:**
    ```bash
    pip install -e ".[dev]" 
    # (Necesitarás definir los 'dev' extras en pyproject.toml para pytest, etc.)
    ```
4.  **Ejecuta las pruebas:**
    ```bash
    pytest
    ```

---
## Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo `LICENSE` para más detalles.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyntegritydb",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "database, integrity, data quality, sql, validator",
    "author": null,
    "author_email": "Osvaldo Trujillo <osvaldo.trujillo.ingenieria@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/4c/87/a9bafbf021799ff80eb374095b138bbb959f90d819c6de9c3dcd300c66ba/pyntegritydb-0.3.0.tar.gz",
    "platform": null,
    "description": "# 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[![Coverage Status](https://coveralls.io/repos/github/osvaldomx/pyntegritydb/badge.svg?branch=main)](https://coveralls.io/github/osvaldomx/pyntegritydb?branch=main)\n\n\n**pyntegritydb** es una herramienta de l\u00ednea de comandos para analizar y medir la calidad de la integridad referencial en bases de datos relacionales. Basada en el paper acad\u00e9mico [\"Referential Integrity Quality Metrics\"](https://www2.cs.uh.edu/~ordonez/pdfwww/w-2008-DSS-refint.pdf), la biblioteca te ayuda a diagnosticar r\u00e1pidamente relaciones rotas o \"hu\u00e9rfanas\" en tu esquema.\n\n\n\n---\n## Caracter\u00edsticas Principales\n\n* **An\u00e1lisis Dual**: Mide tanto la **Completitud** (filas hu\u00e9rfanas) 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\u00e1ndares.\n* **Soporte Multi-DB**: Compatible con cualquier base de datos que soporte SQLAlchemy (PostgreSQL, MySQL, SQLite, etc.).\n* **Reportes Flexibles**: Genera reportes en m\u00faltiples formatos: tabla para la consola (`cli`), `json` o `csv`.\n* **Visualizaci\u00f3n de Esquema**: Crea un mapa visual de la salud de tus relaciones con el flag `--visualize`.\n\n---\n## Instalaci\u00f3n\n\nInstala `pyntegritydb` directamente desde PyPI:\n\n```bash\npip install pyntegritydb\n```\n\n---\n## Gu\u00eda de Inicio R\u00e1pido\n\nEjecuta un an\u00e1lisis completo, genera un reporte en JSON y un mapa visual con un solo comando.\n\n### 1. Crea tu Archivo de Configuraci\u00f3n\n\n**Crea un archivo `config.yml`** (ver [Gu\u00eda de Uso Completa](https://pyntegritydb.readthedocs.io/) para m\u00e1s 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\u00e1lidas\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\u00e1lisis\n\nUsa el comando `pyntegritydb` apuntando a tu base de datos y a tu archivo de configuraci\u00f3n.\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\u00e1 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\u00e1 un reporte completo en tu consola, mostrando primero las alertas, y luego los an\u00e1lisis detallados.\n\n```\n\ud83d\udea6 Reporte de Alertas \ud83d\udea6\n=========================\n- ALERTA [Completitud]: La tabla 'orders' viola el umbral de 'validity_rate'. Esperado >= 100.00%, Obtenido = 98.50%\n\n### Reporte de Completitud (Filas Hu\u00e9rfanas) ###\n+-----------------+------------------+-----------------+-----------------+-------------+\n| Tabla de Origen | Tabla de Destino | Tasa de Validez | Filas Hu\u00e9rfanas | Total Filas |\n+=================+==================+=================+=================+=============+\n| orders          | users            | 98.50%          | 15              | 1000        |\n+-----------------+------------------+-----------------+-----------------+-------------+\n...\n```\n---\n## Documentaci\u00f3n\n\nPara una gu\u00eda detallada, tutoriales y la referencia completa de la API, visita nuestra documentaci\u00f3n 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\u00e1s 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\u00e1 bajo la Licencia MIT. Consulta el archivo `LICENSE` para m\u00e1s detalles.\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2025 Osvaldo Trujillo\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "Una biblioteca para medir la calidad de la integridad referencial en bases de datos relacionales.",
    "version": "0.3.0",
    "project_urls": {
        "Changelog": "https://github.com/osvaldomx/pyntegritydb/releases/tag/v0.2.0",
        "Homepage": "https://github.com/osvaldomx/pyntegritydb",
        "Issues": "https://github.com/osvaldomx/pyntegritydb/issues",
        "Repository": "https://github.com/osvaldomx/pyntegritydb"
    },
    "split_keywords": [
        "database",
        " integrity",
        " data quality",
        " sql",
        " validator"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d279045e4a6dd0676dd902c2953e90f6ed18d5ebfc7aa1e9c4b8cbbd3de66d7b",
                "md5": "1696c10ca663c8e60efbb5ca59f42cb6",
                "sha256": "533cf6896348c14b0180eaf2119b17e03e5504f3f97eb4049cda57b4ff4e6389"
            },
            "downloads": -1,
            "filename": "pyntegritydb-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1696c10ca663c8e60efbb5ca59f42cb6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 16500,
            "upload_time": "2025-08-17T09:00:40",
            "upload_time_iso_8601": "2025-08-17T09:00:40.983536Z",
            "url": "https://files.pythonhosted.org/packages/d2/79/045e4a6dd0676dd902c2953e90f6ed18d5ebfc7aa1e9c4b8cbbd3de66d7b/pyntegritydb-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4c87a9bafbf021799ff80eb374095b138bbb959f90d819c6de9c3dcd300c66ba",
                "md5": "cb88ca210ae04c4b6b618a44d29cb4db",
                "sha256": "f8a02fc86945ec7f8c56e94ccdbfc7025d1602903b5495276eb39d196852cd03"
            },
            "downloads": -1,
            "filename": "pyntegritydb-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "cb88ca210ae04c4b6b618a44d29cb4db",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 24041,
            "upload_time": "2025-08-17T09:00:43",
            "upload_time_iso_8601": "2025-08-17T09:00:43.382350Z",
            "url": "https://files.pythonhosted.org/packages/4c/87/a9bafbf021799ff80eb374095b138bbb959f90d819c6de9c3dcd300c66ba/pyntegritydb-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-17 09:00:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "osvaldomx",
    "github_project": "pyntegritydb",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyntegritydb"
}
        
Elapsed time: 1.53761s