Passer au contenu du pied de page
AIDE PYTHON

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

Peewee est un petit ORM expressif qui vise à faciliter l'interaction avec la base de données en Python. Il est léger, facile à utiliser et suffisamment sûr de lui pour prendre en charge des requêtes complexes ou des schémas de base de données. Peewee prend en charge SQLite, MySQL et PostgreSQL avec une syntaxe intuitive, ce qui le rend très facile à apprendre, devenant ainsi très populaire parmi les étudiants et les professionnels.

IronPDF est une bibliothèque Python qui permet de travailler de bout en bout avec des documents PDF : créer, lire, éditer et gérer. Grâce à Python .NET, on peut utiliser IronPDF for Python avec des applications Python, et ainsi en tirer de très fortes capacités de génération de PDF. Cette combinaison est donc très utile pour générer des rapports PDF à partir de données extraites de bases de données.

Cette intégration combine Peewee avec IronPDF pour la création d'applications par des développeurs Python de telle sorte qu'une gestion et une interrogation efficaces des bases de données sont possibles en même temps que la génération de documents PDF dynamiques et axés sur les données. Cette combinaison prépare un flux de travail parfait, de la récupération des données à la génération de rapports, et offre donc un ensemble d'outils très solides pour la création d'une documentation professionnelle et automatisée. En commençant par les rapports commerciaux simples comme les factures et en allant jusqu'aux rapports complexes, Peewee et IronPDF fournissent ensemble une solution sans faille pour la génération de PDF pilotée par une base de données dans n'importe quelle application Python.

Qu'est-ce que PeeWee Python?

Peewee est un petit ORM expressif pour Python qui facilite le travail avec une base de données. Il crée facilement des modèles et facilite la création de requêtes courantes telles que la recherche, l'ajout, la mise à jour et la suppression de plusieurs enregistrements dans la base de données. Peewee peut être utilisé dans de nombreux cas, car il prend en charge différents backends : SQLite, MySQL et PostgreSQL.

Ce qu'il faut retenir de Peewee, c'est sa simplicité et sa facilité. Il est très facile pour un développeur de créer des modèles en tant que classes en Python, tandis que toutes les requêtes contre la base de données sont effectuées en code Python grâce à une API simple. Malgré sa simplicité, Peewee est très puissant puisqu'il prend en charge les questions compliquées, les jointures et les relations complexes, ainsi que la mise en commun des connexions.

peewee Python ((Comment ça marche : un guide pour les développeurs)) : Figure 1 - Peewee

La flexibilité et la conception minimaliste de Peewee en font un outil très utile pour les petits projets et les applications plus importantes où la facilité d'utilisation et la rapidité de développement sont primordiales. La gestion d'interactions complexes avec les bases de données avec très peu de code standard en a fait un ORM attrayant pour tout développeur Python.

Caractéristiques de Peewee Python

Peewee est une bibliothèque ORM expressive et légère pour Python qui permet d'interagir facilement avec la base de données. Un certain nombre de ses caractéristiques importantes sont énumérées ci-dessous :

  • Facile et simple: Peewee dispose d'une API très facile et intuitive à exposer. Les développeurs peuvent définir des modèles avec tous leurs attributs normaux sans aucun problème et interagir facilement avec la base de données à l'aide du code Python.

  • Multiples bases de données: Il prend en charge SQLite, MySQL, PostgreSQL et CockroachDB.

  • Syntaxe d'interrogation expressive: Peewee dispose d'une syntaxe propre et expressive pour l'interrogation des bases de données ; nous pouvons utiliser les mêmes opérations de requête comme Select, Create, Update, et une requête de suppression permettant aux développeurs d'écrire des requêtes difficiles en utilisant des constructions Python.

  • Définition du modèle: On définit les modèles de base de données comme des classes Python dans Peewee. Les champs de la classe correspondent aux colonnes de la base de données. Cette définition garantit que si l'on apporte une quelconque modification au schéma de la base de données, des changements équivalents sont apportés au code Python, et vice versa.

  • Relations: Il prend en charge toutes les relations - y compris les clés étrangères, les relations un-à-un et plusieurs-à-plusieurs - nécessaires à la modélisation de données complexes.

  • Connection Pooling: Peewee est livré avec une mise en commun des connexions intégrée pour améliorer les performances grâce à la réutilisation des connexions à la base de données.

  • Transactions: Les transactions atomiques garantissent l'exécution d'un ensemble d'opérations de base de données, mais en cas d'échec de l'une d'entre elles, toutes sont annulées afin de préserver la validité de vos données.

  • Signaux et crochets: Peewee fournit des signaux et des crochets pour mettre en œuvre un comportement personnalisé avant ou après certains événements, comme l'enregistrement ou la suppression d'un enregistrement.

  • Migrations: En outre, cette traduction intègre des bibliothèques tierces à la bibliothèque principale, Peewee-migrate, et gère ainsi les migrations de schémas de base de données. Cela facilitera la transition entre les versions d'une base de données.

  • Extensibilité: Peewee peut être facilement étendu par des champs personnalisés, des requêtes ou quelques autres fonctionnalités en fonction des besoins concrets de l'application.

  • Extensions de Playhouse: Ce module est livré avec une variété d'extensions de Playhouse, y compris la recherche plein texte pour SQLite, quelques fonctionnalités spécifiques à PostgreSQL, et quelques outils pour la gestion des connexions.

  • Support asynchrone: aiopeewee est une extension qui permet à Peewee de prendre en charge les opérations asynchrones adaptées aux applications hautes performances.

Créer et configurer Peewee

Les étapes suivantes vous aideront à démarrer avec Peewee dans n'importe quel projet Python, en mettant en place une application simple utilisant Peewee ORM.

Installer Peewee

Tout d'abord, installez Peewee à l'aide de pip :

pip install peewee
pip install peewee
SHELL

Définissez vos modèles

Veillez à définir vos modèles de base de données dans un fichier Python appelé app.py. Ici, nous ferons de même pour simplifier, en utilisant SQLite.

from peewee import SqliteDatabase, Model, CharField, IntegerField, ForeignKeyField

# Define the database connection
db = SqliteDatabase('my_database.db')

# Define a base model class
class BaseModel(Model):
    class Meta:
        database = db

# Define a User model
class User(BaseModel):
    username = CharField(unique=True)
    age = IntegerField()

# Define a Tweet model, which is related to the User model
class Tweet(BaseModel):
    user = ForeignKeyField(User, backref='tweets')
    content = CharField()

# Create the tables
db.connect()
db.create_tables([User, Tweet])
from peewee import SqliteDatabase, Model, CharField, IntegerField, ForeignKeyField

# Define the database connection
db = SqliteDatabase('my_database.db')

# Define a base model class
class BaseModel(Model):
    class Meta:
        database = db

# Define a User model
class User(BaseModel):
    username = CharField(unique=True)
    age = IntegerField()

# Define a Tweet model, which is related to the User model
class Tweet(BaseModel):
    user = ForeignKeyField(User, backref='tweets')
    content = CharField()

# Create the tables
db.connect()
db.create_tables([User, Tweet])
PYTHON

Insérer des données

Ajoutons maintenant quelques données à notre base de données.

def insert_data():
    # Insert a new user
    alice = User.create(username='Alice', age=30)
    # Insert some tweets for Alice
    Tweet.create(user=alice, content='Hello world!')
    Tweet.create(user=alice, content='I love Peewee!')
    # Insert another user and a tweet for that user
    bob = User.create(username='Bob', age=25)
    Tweet.create(user=bob, content='This is Bob')

insert_data()
def insert_data():
    # Insert a new user
    alice = User.create(username='Alice', age=30)
    # Insert some tweets for Alice
    Tweet.create(user=alice, content='Hello world!')
    Tweet.create(user=alice, content='I love Peewee!')
    # Insert another user and a tweet for that user
    bob = User.create(username='Bob', age=25)
    Tweet.create(user=bob, content='This is Bob')

insert_data()
PYTHON

Données de requête

Construisons maintenant du code pour extraire toutes ces informations de notre base de données.

def query_data():
    # Query to select all users and print their usernames and ages
    for user in User.select():
        print(f'User: {user.username}, Age: {user.age}')

    # Find tweets for a specific user, in this case, 'Alice'
    for tweet in Tweet.select().join(User).where(User.username == 'Alice'):
        print(f'{tweet.user.username} tweeted: {tweet.content}')

query_data()
def query_data():
    # Query to select all users and print their usernames and ages
    for user in User.select():
        print(f'User: {user.username}, Age: {user.age}')

    # Find tweets for a specific user, in this case, 'Alice'
    for tweet in Tweet.select().join(User).where(User.username == 'Alice'):
        print(f'{tweet.user.username} tweeted: {tweet.content}')

query_data()
PYTHON

Vous trouverez ci-dessous la capture d'écran combinée de tous les codes ci-dessus.

peewee Python ((Comment ça marche : un guide pour les développeurs)) : Figure 2 - Sortie des données de la requête

Commencer

Tout d'abord, vous devrez importer Peewee pour les fonctionnalités associées à la cartographie relationnelle objet, et IronPDF pour la génération de PDF. Ce tutoriel suppose que vous avez déjà des connaissances en Python et que vous savez comment configurer à la fois IronPDF pour travailler en Python via Python .NET et Peewee. Les étapes suivantes vous guideront dans la création d'une application simple utilisant Peewee pour interagir avec une base de données, et IronPDF sera utilisé pour générer un rapport PDF.

Qu'est-ce qu'IronPDF ?

Le module Python IronPDF est une bibliothèque avancée pour la création, l'édition et la lecture de PDF. Il offre un grand nombre de fonctionnalités qui permettent aux programmeurs d'effectuer de nombreuses activités programmables avec des PDF. Il s'agit notamment de convertir des fichiers HTML en fichiers PDF afin d'éditer des PDF existants. Cela permettra d'accroître la flexibilité et de faciliter la production de rapports de qualité au format PDF. Les programmes générant et traitant des PDF de manière dynamique peuvent en tirer parti.

peewee Python ((Comment ça marche : un guide pour les développeurs)) : Figure 3 - IronPDF

Conversion HTML en PDF

Toute donnée HTML, datée à tout moment, pourrait être facilement convertie en document PDF grâce aux capacités d'IronPDF. La traduction doit rester professionnelle et préserver la précision technique tout en expliquant les caractéristiques et les avantages de ces outils de développement. Elle fournit en outre une plateforme à l'utilisateur pour créer des publications PDF extrêmement innovantes et attrayantes directement à partir de matériel en ligne tout en utilisant les toutes dernières capacités de HTML5, CSS3 et JavaScript.

Générer et Éditer des PDFs

Vous pouvez générer de nouveaux documents PDF avec du texte, des images, des tableaux, etc., même avec l'aide d'un langage de programmation. Vous êtes autorisé à ouvrir les documents préparés à l'avance et à les modifier à l'aide d'IronPDF, ce qui ajoute encore à la personnalisation. Le contenu d'un document PDF peut être ajouté, modifié ou supprimé à tout moment.

Design complexe et stylisation

Étant donné qu'il possède un style de contenu pour les PDF, les mises en page complexes peuvent être contrôlées avec plusieurs polices, couleurs et autres éléments de conception qui rendent cela possible. En outre, JavaScript ne peut pas être appliqué pour gérer le matériel dynamique dans les PDF afin de permettre un rendu facile du contenu HTML.

Installer IronPDF

IronPDF peut être installé à l'aide de Pip. La commande d'installation se présente comme suit :

pip install ironpdf
pip install ironpdf
SHELL

Combiner Peewee avec IronPDF

L'ORM Peewee peut être créé et configuré, des données peuvent être insérées et des rapports PDF peuvent être produits en combinant toutes les étapes dans le fichier app.py.

from peewee import SqliteDatabase, Model, CharField, IntegerField, ForeignKeyField
import os
from ironpdf import *   # Import IronPDF for PDF generation
import warnings  # Suppress any warning messages for clean output

warnings.filterwarnings('ignore')

# You must specify your license key if IronPDF requires it; use an empty string for trial
License.LicenseKey = ""

# Define the database connection using SQLite
db = SqliteDatabase('my_database.db')

# BaseModel class that will define common configurations for all models
class BaseModel(Model):
    class Meta:
        database = db

# Define a User model to interact with the 'User' table in the database
class User(BaseModel):
    username = CharField(unique=True)  # Ensure username is unique
    age = IntegerField()

# Define a Tweet model for the 'Tweet' table that references User
class Tweet(BaseModel):
    user = ForeignKeyField(User, backref='tweets')  # Define relationship with User
    content = CharField()

# Connect to the database and create the necessary tables if they don't exist
db.connect()
db.create_tables([User, Tweet])

def insert_data():
    # Insert some sample data into the User and Tweet models
    alice = User.create(username='Alice', age=30)
    Tweet.create(user=alice, content='Hello world!')
    Tweet.create(user=alice, content='I love Peewee!')
    bob = User.create(username='Bob', age=25)
    Tweet.create(user=bob, content='This is Bob')

def generate_pdf():
    # Fetch the data from the database
    users = User.select()
    tweets = Tweet.select().join(User)

    # Prepare HTML content for the PDF generation
    html_content = """
    <html>
    <head><title>Data Report</title></head>
    <body>
        <h1>User Data Report</h1>
        <h2>Users</h2>
        <ul>
    """
    for user in users:
        html_content += f"<li>{user.username}, Age: {user.age}</li>"
    html_content += "</ul><h2>Tweets</h2><ul>"
    for tweet in tweets:
        html_content += f"<li>{tweet.user.username} tweeted: {tweet.content}</li>"
    html_content += "</ul></body></html>"

    # Create a PDF document using IronPDF
    renderer = ChromePdfRenderer()
    pdf = renderer.RenderHtmlAsPdf(html_content)

    # Save the PDF file to the current working directory
    output_path = os.path.join(os.getcwd(), "Data_Report.pdf")
    pdf.SaveAs(output_path)
    print(f"PDF Report saved to {output_path}")

if __name__ == '__main__':
    insert_data()       # Insert data into the database
    generate_pdf()      # Generate a PDF report based on the data
from peewee import SqliteDatabase, Model, CharField, IntegerField, ForeignKeyField
import os
from ironpdf import *   # Import IronPDF for PDF generation
import warnings  # Suppress any warning messages for clean output

warnings.filterwarnings('ignore')

# You must specify your license key if IronPDF requires it; use an empty string for trial
License.LicenseKey = ""

# Define the database connection using SQLite
db = SqliteDatabase('my_database.db')

# BaseModel class that will define common configurations for all models
class BaseModel(Model):
    class Meta:
        database = db

# Define a User model to interact with the 'User' table in the database
class User(BaseModel):
    username = CharField(unique=True)  # Ensure username is unique
    age = IntegerField()

# Define a Tweet model for the 'Tweet' table that references User
class Tweet(BaseModel):
    user = ForeignKeyField(User, backref='tweets')  # Define relationship with User
    content = CharField()

# Connect to the database and create the necessary tables if they don't exist
db.connect()
db.create_tables([User, Tweet])

def insert_data():
    # Insert some sample data into the User and Tweet models
    alice = User.create(username='Alice', age=30)
    Tweet.create(user=alice, content='Hello world!')
    Tweet.create(user=alice, content='I love Peewee!')
    bob = User.create(username='Bob', age=25)
    Tweet.create(user=bob, content='This is Bob')

def generate_pdf():
    # Fetch the data from the database
    users = User.select()
    tweets = Tweet.select().join(User)

    # Prepare HTML content for the PDF generation
    html_content = """
    <html>
    <head><title>Data Report</title></head>
    <body>
        <h1>User Data Report</h1>
        <h2>Users</h2>
        <ul>
    """
    for user in users:
        html_content += f"<li>{user.username}, Age: {user.age}</li>"
    html_content += "</ul><h2>Tweets</h2><ul>"
    for tweet in tweets:
        html_content += f"<li>{tweet.user.username} tweeted: {tweet.content}</li>"
    html_content += "</ul></body></html>"

    # Create a PDF document using IronPDF
    renderer = ChromePdfRenderer()
    pdf = renderer.RenderHtmlAsPdf(html_content)

    # Save the PDF file to the current working directory
    output_path = os.path.join(os.getcwd(), "Data_Report.pdf")
    pdf.SaveAs(output_path)
    print(f"PDF Report saved to {output_path}")

if __name__ == '__main__':
    insert_data()       # Insert data into the database
    generate_pdf()      # Generate a PDF report based on the data
PYTHON

Ce code montre comment utiliser Python .NET pour combiner IronPDF, une bibliothèque Python pour la création de PDF, avec Peewee, un ORM léger pour Python. En utilisant Peewee, il crée d'abord une base de données SQLite et définit les modèles User et Tweet avec les champs appropriés. Après avoir créé les tables de la base de données, des échantillons de données y sont ajoutés. Ensuite, en utilisant la classe ChromePdfRenderer d'IronPDF, la fonction generate_pdf récupère ces données et les transforme en une chaîne HTML qui est ensuite rendue sous forme de PDF.

peewee Python ((Comment ça marche : un guide pour les développeurs)) : Figure 4 - Sortie de la console

Le répertoire de travail actuel est l'endroit où le PDF est stocké. Utilisant les avantages de Peewee pour l'administration des bases de données et d'IronPDF pour la production de documents PDF soignés, cette configuration permet des interactions fluides avec les bases de données et la production automatisée de rapports PDF au sein d'une application Python.

peewee Python ((Comment ça marche : un guide pour les développeurs)) : Figure 5 - Sortie PDF

Conclusion

Les développeurs Python cherchant à gérer des bases de données et à générer des documents PDF dynamiques disposeront ainsi d'une option fiable une fois qu'IronPDF sera intégré à Python. Grâce aux fonctionnalités ORM faciles à utiliser, les interactions avec les bases de données sont facilitées dans Peewee, ce qui permet à un développeur de construire et de modifier des schémas de base de données avec beaucoup de facilité. D'autre part, IronPDF dispose d'un package qui facilite la traduction de contenus HTML en rapports PDF de qualité.

Cette combinaison sera donc très utile dans les applications qui génèrent des rapports automatiques à partir de données dynamiques extraites de bases de données. Les développeurs peuvent profiter de la facilité avec laquelle il est possible de définir des modèles et d'exécuter des requêtes avec Peewee, et de la puissance avec laquelle IronPDF crée des PDF, pour améliorer efficacement l'efficacité et la productivité. Peewee et IronPDF, en tant que combinaison, se transforment en outils flexibles et solides pour répondre à une grande variété de besoins d'application dans une foule de façons au sein de l'univers de développement Python. Il peut s'agir de facturation ou de rapports sur des documents spéciaux.

La combinaison d'IronPDF avec d'autres Iron Software permettra de donner des solutions logicielles supérieures aux clients qui offrent des solutions complexes aux utilisateurs. Pour votre bien, cela simplifiera la tâche d'amélioration des opérations des projets et des procédures en général.

Outre les fonctionnalités de base, il existe une documentation détaillée, une communauté active et un cycle de mise à jour régulier pour IronPDF. Sur la base des informations des paragraphes précédents, un développeur peut considérer Iron Software comme un partenaire fiable pour les projets de développement de logiciels modernes. Pour découvrir toutes les fonctionnalités de cette bibliothèque, IronPDF propose un essai gratuit pour un développeur. Dans les jours qui suivent, vous vous assurerez d'obtenir la pleine valeur de votre $799 dépensée pour les frais de licence.

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