Saltar al pie de página
AYUDA DE PYTHON

Grakn Python (Cómo Funciona: Una Guía para Desarrolladores)

Las bases de datos evolucionan para satisfacer las demandas de nuevas aplicaciones. Si bien las bases de datos relacionales tradicionales todavía se utilizan, ahora contamos con avances como el Mapeo Objeto-Relacional (ORM), que permite a los desarrolladores interactuar con las bases de datos utilizando abstracciones de programación de alto nivel en lugar de depender únicamente de SQL. Este enfoque optimiza la gestión de datos y promueve una organización de código más limpia. Además, han surgido las bases de datos NoSQL como herramientas útiles para manejar datos no estructurados, particularmente en aplicaciones de big data y análisis en tiempo real.

Las bases de datos nativas de la nube también están teniendo un impacto significativo, ofreciendo servicios escalables, confiables y gestionados que reducen la carga de mantener la infraestructura subyacente. Además, las bases de datos NewSQL y de grafos combinan las fortalezas de SQL y NoSQL, ofreciendo la fiabilidad de las bases de datos relacionales con la flexibilidad de NoSQL. Esta combinación las hace adecuadas para muchas aplicaciones modernas. Al integrar estos diversos tipos de bases de datos con paradigmas de programación innovadores, podemos crear soluciones escalables y adaptativas que se alineen con las demandas centradas en los datos de hoy. Grakn, ahora conocido como TypeDB, ejemplifica esta tendencia apoyando la gestión y consulta de grafos de conocimiento. En este artículo, exploraremos Grakn (TypeDB) y su integración con IronPDF, una herramienta crucial para la generación y manipulación programática de PDFs.

¿Qué es Grakn?

Grakn (ahora TypeDB), creado por Grakn Labs, es una base de datos de grafos de conocimiento diseñada para gestionar y analizar redes complejas de datos. Se destaca en la modelación de relaciones sofisticadas dentro de conjuntos de datos existentes y proporciona potentes capacidades de razonamiento sobre los datos almacenados. El lenguaje de consulta de Grakn, Graql, permite la manipulación y consulta precisa de datos, habilitando el desarrollo de sistemas inteligentes que pueden extraer información valiosa de conjuntos de datos intrincados. Al aprovechar las características principales de Grakn, las organizaciones pueden gestionar estructuras de datos con una representación de conocimiento robusta e inteligente.

Grakn Python (Cómo funciona: una guía para desarrolladores): Figura 1 - página web de TypeDB

Graql, el lenguaje de consulta de Grakn, está específicamente elaborado para interactuar eficazmente con el modelo de grafos de conocimiento de Grakn, permitiendo transformaciones de datos detalladas y matizadas. Debido a su escalabilidad horizontal y capacidad para manejar grandes conjuntos de datos, TypeDB es adecuado para dominios como finanzas, atención médica, descubrimiento de fármacos y ciberseguridad, donde entender y gestionar estructuras de grafos complejas es crucial.

Instalación y configuración de Grakn en Python

Instalación de Grakn

Para los desarrolladores de Python interesados en usar Grakn (TypeDB), instalar la biblioteca typedb-driver es esencial. Este cliente oficial facilita la interacción con TypeDB. Use el siguiente comando pip para instalar esta biblioteca:

pip install typedb-driver
pip install typedb-driver
SHELL

Cómo configurar el servidor TypeDB

Antes de escribir código, asegúrese de que su servidor TypeDB esté activo y en funcionamiento. Siga las instrucciones de instalación y configuración proporcionadas en el sitio web de TypeDB para su sistema operativo. Una vez instalado, puede usar el siguiente comando para iniciar el servidor TypeDB:

./typedb server
./typedb server
SHELL

Uso de Grakn en Python

Código Python para interactuar con TypeDB

Esta sección ilustra el establecimiento de una conexión con un servidor TypeDB, la configuración de un esquema de base de datos, y la realización de operaciones básicas como la inserción y recuperación de datos.

Creación de un esquema de base de datos

En el siguiente bloque de código, definimos la estructura de la base de datos creando un tipo llamado person con dos atributos: name y age. Abrimos una sesión en modo SCHEMA, permitiendo modificaciones estructurales. Así es como se define y se compromete el esquema:

from typedb.driver import TypeDB, SessionType, TransactionType

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Create a database (if not already created)
database_name = "example_db"
if not client.databases().contains(database_name):
    client.databases().create(database_name)

with client.session(database_name, SessionType.SCHEMA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        transaction.query().define("""
        define
        person sub entity, owns name, owns age;
        name sub attribute, value string;
        age sub attribute, value long;
        """)
        transaction.commit()
from typedb.driver import TypeDB, SessionType, TransactionType

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Create a database (if not already created)
database_name = "example_db"
if not client.databases().contains(database_name):
    client.databases().create(database_name)

with client.session(database_name, SessionType.SCHEMA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        transaction.query().define("""
        define
        person sub entity, owns name, owns age;
        name sub attribute, value string;
        age sub attribute, value long;
        """)
        transaction.commit()
PYTHON

Inserción de datos

Después de establecer el esquema, el script inserta datos en la base de datos. Abrimos una sesión en modo DATA, adecuado para operaciones de datos, y ejecutamos una consulta de inserción para agregar una nueva entidad person con el nombre "Alice" y edad 30:

# Insert data into the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        # Create a person entity
        transaction.query().insert("""
        insert $p isa person, has name "Alice", has age 30;
        """)
        transaction.commit()
# Insert data into the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        # Create a person entity
        transaction.query().insert("""
        insert $p isa person, has name "Alice", has age 30;
        """)
        transaction.commit()
PYTHON

Consulta de datos

Finalmente, recuperamos información de la base de datos consultando entidades con el nombre "Alice". Abrimos una nueva sesión en modo DATA e iniciamos una transacción de lectura utilizando TransactionType.READ. Los resultados son procesados para extraer y mostrar el nombre y la edad:

# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Query entities where the person has the name 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            print(f"Person Name: {person_name}, Age: {person_age}")
# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Query entities where the person has the name 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            print(f"Person Name: {person_name}, Age: {person_age}")
PYTHON

Resultado

Grakn Python (Cómo funciona: una guía para desarrolladores): Figura 2 - Salida de consola consultando la base de datos

Cierre de la conexión con el cliente

Para liberar adecuadamente los recursos y prevenir interacciones adicionales con el servidor TypeDB, cierre la conexión del cliente usando client.close():

# Close the client connection
client.close()
# Close the client connection
client.close()
PYTHON

Presentando IronPDF

Grakn Python (Cómo funciona: una guía para desarrolladores): Figura 3 - Página web de IronPDF para Python

IronPDF para Python es una poderosa biblioteca para crear y manipular archivos PDF programáticamente. Proporciona funcionalidad integral para crear PDFs desde HTML, fusionar archivos PDF y anotar documentos PDF existentes. IronPDF también permite la conversión de contenido HTML o web en PDFs de alta calidad, lo que lo convierte en una opción ideal para generar informes, facturas y otros documentos de disposición fija.

La biblioteca ofrece funciones avanzadas como extracción de contenido, cifrado de documentos y personalización del diseño de páginas. Al integrar IronPDF en aplicaciones Python, los desarrolladores pueden automatizar los flujos de trabajo de generación de documentos y mejorar las capacidades generales de gestión de PDFs.

Instalación de la biblioteca IronPDF

Para habilitar la funcionalidad de IronPDF en Python, instale la biblioteca usando pip:

pip install ironpdf
pip install ironpdf
SHELL

Integración de Grakn TypeDB con IronPDF

Al combinar TypeDB e IronPDF en un entorno Python, los desarrolladores pueden generar y gestionar eficientemente documentación PDF basándose en datos estructurados complejamente en una base de datos Grakn (TypeDB). Aquí tienes un ejemplo de integración:

from typedb.driver import TypeDB, SessionType, TransactionType
from ironpdf import *
import warnings

# Suppress potential warnings
warnings.filterwarnings('ignore')

# Replace with your own license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Initialize data list
data = []

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Fetch details of persons named 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            data.append({"name": person_name, "age": person_age})

# Close the client connection
client.close()

# Create a PDF from HTML content
html_to_pdf = ChromePdfRenderer()
content = "<h1>Person Report</h1>"
for item in data:
    content += f"<p>Name: {item['name']}, Age: {item['age']}</p>"

# Render the HTML content as a PDF
pdf_document = html_to_pdf.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf_document.SaveAs("output.pdf")
from typedb.driver import TypeDB, SessionType, TransactionType
from ironpdf import *
import warnings

# Suppress potential warnings
warnings.filterwarnings('ignore')

# Replace with your own license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Initialize data list
data = []

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Fetch details of persons named 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            data.append({"name": person_name, "age": person_age})

# Close the client connection
client.close()

# Create a PDF from HTML content
html_to_pdf = ChromePdfRenderer()
content = "<h1>Person Report</h1>"
for item in data:
    content += f"<p>Name: {item['name']}, Age: {item['age']}</p>"

# Render the HTML content as a PDF
pdf_document = html_to_pdf.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf_document.SaveAs("output.pdf")
PYTHON

Este código demuestra cómo usar TypeDB e IronPDF en Python para extraer datos de una base de datos TypeDB y generar un informe PDF. Se conecta a un servidor local de TypeDB, recupera entidades nombradas "Alice", y obtiene sus nombres y edades. Los resultados luego se utilizan para construir contenido HTML, que se convierte en un documento PDF utilizando el ChromePdfRenderer de IronPDF, y se guarda como "output.pdf".

Resultado

Grakn Python (Cómo funciona: una guía para desarrolladores): Figura 4 - PDF generado a partir del código anterior

Licencias

Se requiere una clave de licencia para eliminar las marcas de agua de los PDFs generados. Puede registrarse para una prueba gratuita en este enlace. Tenga en cuenta que no se necesita una tarjeta de crédito para el registro; solo se requiere una dirección de correo electrónico para la versión de prueba gratuita.

Grakn Python (Cómo funciona: una guía para desarrolladores): Figura 5 - Plan de licencias de IronPDF

Conclusión

Grakn (ahora TypeDB) integrado con IronPDF proporciona una solución sólida para gestionar y analizar grandes volúmenes de datos desde documentos PDF. Con las capacidades de IronPDF en extracción y manipulación de datos, y la habilidad de Grakn en modelar relaciones complejas y razonamiento, puede transformar datos de documentos no estructurados en información estructurada y consultable.

Esta integración simplifica la extracción de información valiosa de PDFs, mejorando sus capacidades de consulta y análisis con mayor precisión. Al combinar la gestión de datos de alto nivel de Grakn con las características de procesamiento de PDFs de IronPDF, puede desarrollar formas más eficientes de manejar la información para una mejor toma de decisiones y una comprensión más profunda de conjuntos de datos complejos. Iron Software también ofrece una variedad de bibliotecas para facilitar el desarrollo de aplicaciones en varios sistemas operativos y plataformas, incluidos Windows, Android, macOS, Linux y más.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más