Passer au contenu du pied de page
AIDE PYTHON

Grakn Python (Comment ça marche : Un guide pour les développeurs)

Dans le monde de la programmation d'aujourd'hui, les bases de données évoluent pour répondre aux exigences des nouvelles applications. Bien que les bases de données relationnelles traditionnelles soient encore utilisées, nous avons maintenant des avancées comme le Mapping Objet-Relationnel (ORM), qui permettent aux développeurs d'interagir avec les bases de données en utilisant des abstractions de programmation de haut niveau au lieu de se fier uniquement à SQL. Cette approche simplifie la gestion des données et favorise une organisation plus claire du code. De plus, les bases de données NoSQL ont émergé comme des outils utiles pour gérer les données non structurées, en particulier dans les applications de big data et d'analytique en temps réel.

Les bases de données natives du cloud ont également un impact significatif, offrant des services évolutifs, fiables et gérés qui réduisent le fardeau de la maintenance de l'infrastructure sous-jacente. En outre, les bases de données NewSQL et graphiques combinent les forces de SQL et NoSQL, offrant la fiabilité des bases de données relationnelles avec la flexibilité de NoSQL. Ce mélange les rend adaptés à de nombreuses applications modernes. En intégrant ces différents types de bases de données avec des paradigmes de programmation innovants, nous pouvons créer des solutions évolutives et adaptatives qui répondent aux exigences centrées sur les données d'aujourd'hui. Grakn, désormais connu sous le nom de TypeDB, illustre cette tendance en soutenant la gestion et l'interrogation des graphes de connaissances. Dans cet article, nous explorerons Grakn (TypeDB) et son intégration avec IronPDF, un outil crucial pour générer et manipuler des fichiers PDF de manière programmatique.

Qu'est-ce que Grakn ?

Grakn (devenu TypeDB), créé par Grakn Labs, est une base de données de graphes de connaissances conçue pour gérer et analyser des réseaux complexes de données. Il excelle dans la modélisation des relations sophistiquées au sein des ensembles de données existants et offre des capacités de raisonnement puissantes sur les données stockées. Le langage de requête de Grakn, Graql, permet une manipulation précise et une interrogation des données, permettant le développement de systèmes intelligents capables d'extraire des informations précieuses à partir d'ensembles de données complexes. En exploitant les fonctionnalités de base de Grakn, les organisations peuvent gérer les structures de données avec une représentation de connaissances robuste et intelligente.

Grakn Python (Comment ça fonctionne : Un guide pour les développeurs) : Figure 1 - Page web de TypeDB

Graql, le langage de requête de Grakn, est spécifiquement conçu pour interagir efficacement avec le modèle de graphe de connaissances de Grakn, permettant des transformations de données détaillées et nuancées. En raison de sa scalabilité horizontale et de sa capacité à gérer de grands ensembles de données, TypeDB convient bien aux domaines tels que la finance, la santé, la découverte de médicaments et la cybersécurité, où la compréhension et la gestion des structures de graphes complexes sont cruciales.

Installation et configuration de Grakn en Python

Installer Grakn

Pour les développeurs Python intéressés par l'utilisation de Grakn (TypeDB), l'installation de la bibliothèque typedb-driver est essentielle. Ce client officiel facilite l'interaction avec TypeDB. Utilisez la commande pip suivante pour installer cette bibliothèque :

pip install typedb-driver
pip install typedb-driver
SHELL

Configurer le serveur TypeDB

Avant d'écrire du code, assurez-vous que votre serveur TypeDB est opérationnel. Suivez les instructions d'installation et de configuration fournies sur le site web de TypeDB pour votre système d'exploitation. Une fois installé, vous pouvez utiliser la commande suivante pour démarrer le serveur TypeDB :

./typedb server
./typedb server
SHELL

Utiliser Grakn en Python

Code Python pour interagir avec TypeDB

Cette section illustre l'établissement d'une connexion avec un serveur TypeDB, la configuration d'un schéma de base de données et l'exécution d'opérations de base comme l'insertion et la récupération de données.

Créer un schéma de base de données

Dans le bloc de code suivant, nous définissons la structure de la base de données en créant un type appelé person avec deux attributs : name et age. Nous ouvrons une session en mode SCHÉMA, permettant des modifications structurelles. Voici comment le schéma est défini et validé :

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

Insertion de données

Après avoir établi le schéma, le script insère des données dans la base de données. Nous ouvrons une session en mode DONNÉES, adapté aux opérations de données, et exécutons une requête d'insertion pour ajouter une nouvelle entité person avec le nom "Alice" et l'âge de 30 ans :

# 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

Interroger les données

Enfin, nous récupérons des informations de la base de données en interrogeant pour des entités avec le nom "Alice". Nous ouvrons une nouvelle session en mode DONNÉES et lançons une transaction de lecture en utilisant TransactionType.READ. Les résultats sont traités pour extraire et afficher le nom et l'âge :

# 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

Sortie

Grakn Python (Comment ça fonctionne : Un guide pour les développeurs) : Figure 2 - Sortie de la console suite à l'interrogation de la base de données

Fermeture de la connexion du client

Pour libérer correctement les ressources et empêcher toute interaction ultérieure avec le serveur TypeDB, fermez la connexion client en utilisant client.close() :

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

Présentation d'IronPDF

Grakn Python (Comment ça fonctionne : Un guide pour les développeurs) : Figure 3 - Page web de IronPDF pour Python

IronPDF pour Python est une bibliothèque puissante pour créer et manipuler des fichiers PDF de manière programmatique. Elle fournit une fonctionnalité complète pour créer des PDF à partir de HTML, fusionner des fichiers PDF et annoter des documents PDF existants. IronPDF permet également la conversion de HTML ou de contenu web en PDF de haute qualité, ce qui en fait un choix idéal pour générer des rapports, factures et autres documents à mise en page fixe.

La bibliothèque offre des fonctionnalités avancées telles que l'extraction de contenu, le cryptage de documents et la personnalisation de la mise en page des pages. En intégrant IronPDF dans les applications Python, les développeurs peuvent automatiser les flux de travail de génération de documents et améliorer les capacités globales de gestion des PDF.

Installation de la bibliothèque IronPDF

Pour activer la fonctionnalité IronPDF en Python, installez la bibliothèque à l'aide de pip :

pip install ironpdf
pip install ironpdf
SHELL

Intégration Grakn TypeDB avec IronPDF

En combinant TypeDB et IronPDF dans un environnement Python, les développeurs peuvent générer et gérer efficacement une documentation PDF basée sur des données à structure complexe dans une base de données Grakn (TypeDB). Voici un exemple d'intégration :

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

Ce code illustre l'utilisation de TypeDB et IronPDF en Python pour extraire des données d'une base de données TypeDB et générer un rapport PDF. Il se connecte à un serveur TypeDB local, récupère des entités nommées "Alice" et extrait leurs noms et âges. Les résultats sont ensuite utilisés pour construire un contenu HTML, qui est converti en document PDF en utilisant le ChromePdfRenderer d'IronPDF, et enregistré sous "output.pdf".

Sortie

Grakn Python (Comment ça fonctionne : Un guide pour les développeurs) : Figure 4 - PDF généré à partir du code précédent

Licences

Une clé de licence est requise pour supprimer les filigranes des PDF générés. Vous pouvez vous inscrire pour un essai gratuit à ce lien. Notez qu'une carte de crédit n'est pas nécessaire pour l'inscription ; seule une adresse e-mail est requise pour la version d'essai gratuite.

Grakn Python (Comment ça fonctionne : Un guide pour les développeurs) : Figure 5 - Plan de licence IronPDF

Conclusion

Grakn (désormais TypeDB) intégré à IronPDF fournit une solution robuste pour gérer et analyser de grands volumes de données à partir de documents PDF. Avec les capacités d'IronPDF en extraction et manipulation des données, et la compétence de Grakn à modéliser des relations complexes et à raisonner, vous pouvez transformer des données de document non structurées en informations structurées et interrogeables.

Cette intégration simplifie l'extraction d'informations précieuses à partir des PDF, améliorant leurs capacités d'interrogation et d'analyse avec plus de précision. En combinant la gestion de données de haut niveau de Grakn avec les fonctionnalités de traitement des PDF d'IronPDF, vous pouvez développer des moyens plus efficaces de gérer l'information pour une meilleure prise de décision et une compréhension plus profonde des ensembles de données complexes. IronSoftware propose également une variété de bibliothèques pour faciliter le développement d'applications sur plusieurs systèmes d'exploitation et plateformes, y compris Windows, Android, macOS, Linux, et plus.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite