Ir para o conteúdo do rodapé
AJUDA DO PYTHON

peewee Python ((Como funciona: um guia para desenvolvedores))

Peewee é um ORM pequeno e expressivo que visa facilitar a interação com o banco de dados em Python. É leve, fácil de usar e suficientemente robusto para suportar consultas complexas ou esquemas de banco de dados. O Peewee oferece suporte a SQLite, MySQL e PostgreSQL com uma sintaxe intuitiva, o que facilita muito o aprendizado e, consequentemente, o torna muito popular entre estudantes e profissionais.

IronPDF é uma biblioteca Python que permite trabalhar de forma completa e integrada com documentos PDF: criar, ler, editar e gerenciar. Utilizando Python .NET, é possível usar o IronPDF com aplicações Python, obtendo assim recursos muito robustos de geração de PDFs. Essa combinação é, portanto, muito útil para gerar relatórios em PDF com base em dados obtidos de bancos de dados.

Essa integração combina o Peewee com o IronPDF para a criação de aplicativos por desenvolvedores Python, de forma que o gerenciamento e a consulta eficientes de bancos de dados sejam possíveis juntamente com a geração de documentos PDF dinâmicos e orientados a dados. Essa combinação proporciona um fluxo de trabalho perfeito, desde a recuperação de dados até a geração de relatórios, oferecendo, portanto, um conjunto de ferramentas muito robusto para a criação de documentação profissional e automatizada. Desde relatórios comerciais simples, como faturas, até relatórios complexos, o Peewee e o IronPDF juntos oferecem uma solução impecável para a geração de PDFs baseada em banco de dados em qualquer aplicação Python.

O que é PeeWee Python?

Peewee é um ORM pequeno e expressivo for Python que facilita o trabalho com bancos de dados. Ele cria modelos facilmente e facilita a criação de consultas comuns, como pesquisar, adicionar, atualizar e excluir vários registros no banco de dados. O Peewee pode ser usado em diversos casos de uso, pois suporta diferentes bancos de dados: SQLite, MySQL e PostgreSQL.

Um dos pontos positivos do Peewee é a sua simplicidade e facilidade de uso. Para um desenvolvedor, é muito fácil criar modelos como classes em Python, enquanto todas as consultas ao banco de dados são feitas como código Python graças a uma API descomplicada. Apesar dessa simplicidade, o Peewee é extremamente poderoso, pois oferece suporte a perguntas complexas, junções e relacionamentos complexos, além de suportar o compartilhamento de conexões.

peewee Python ((Como funciona: um guia para desenvolvedores)): Figura 1 - Peewee

A flexibilidade e o design minimalista tornam o Peewee bastante útil para projetos pequenos e aplicações maiores, onde a facilidade de uso e o desenvolvimento rápido são fundamentais. A capacidade de lidar com interações complexas de banco de dados com muito pouco código repetitivo tornou o Python um ORM atraente para qualquer desenvolvedor Python.

Características do Peewee Python

Peewee é uma biblioteca ORM leve e expressiva for Python que facilita a interação com o banco de dados. Algumas de suas características importantes estão enumeradas abaixo:

  • Fácil e simples: o Peewee possui uma API muito fácil e intuitiva de expor. Os desenvolvedores podem definir modelos com todos os seus atributos normais sem qualquer dificuldade e interagir facilmente com o banco de dados usando código Python.

  • Suporte a múltiplos bancos de dados: Compatível com SQLite, MySQL, PostgreSQL e CockroachDB.

  • Sintaxe de consulta expressiva: O Peewee possui uma sintaxe limpa e expressiva para consultar bancos de dados; Podemos usar as mesmas operações de consulta, como Select, Create, Update e delete, permitindo que os desenvolvedores escrevam consultas complexas usando construções idiomáticas do Python.

  • Definição do modelo: Em Peewee, definem-se modelos de banco de dados como classes Python. Os campos da classe correspondem às colunas do banco de dados. Essa definição garante que, se alguém fizer qualquer tipo de alteração no esquema do banco de dados, alterações equivalentes serão feitas no código Python — e vice-versa.

  • Relacionamentos: Suporta todos os tipos de relacionamento — incluindo chaves estrangeiras, relacionamentos um-para-um e relacionamentos muitos-para-muitos — necessários para modelar dados complexos.

  • Agrupamento de conexões: O Peewee vem com agrupamento de conexões integrado para melhorar o desempenho através da reutilização de conexões de banco de dados.

  • Transações: Transações atômicas garantem que um conjunto de operações de banco de dados seja executado, mas, caso alguma delas falhe, todas são revertidas para manter a validade dos seus dados.

  • Sinais e ganchos: O Peewee fornece sinais e ganchos para implementar comportamentos personalizados antes ou depois de determinados eventos, como salvar ou excluir um registro.

  • Migrações: Além disso, integra bibliotecas de terceiros com a principal, Peewee-migrate, e assim gerencia migrações de esquema de banco de dados. Isso ajudará na transição tranquila entre versões de um banco de dados.

  • Extensibilidade: O Peewee pode ser facilmente estendido com campos personalizados, consultas ou alguns outros recursos, dependendo das necessidades específicas da aplicação.

  • Extensões do Playhouse: Este módulo inclui diversas extensões para o Playhouse, como pesquisa de texto completo para SQLite, algumas funcionalidades específicas para PostgreSQL e algumas ferramentas para gerenciamento de conexões.

  • Suporte Assíncrono: aiopeewee é uma extensão que permite ao Peewee suportar operações assíncronas, adequadas para aplicações de alto desempenho.

Criar e configurar o Peewee

Os passos a seguir ajudam você a começar a usar o Peewee em qualquer projeto Python, configurando um aplicativo simples usando o Peewee ORM.

Instalar Peewee

Primeiro, instale o Peewee usando o pip:

pip install peewee
pip install peewee
SHELL

Defina seus modelos

Certifique-se de definir seus modelos de banco de dados em um arquivo Python chamado app.py. Aqui, para simplificar, faremos o mesmo usando o 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

Inserir dados

Agora vamos adicionar alguns dados ao nosso banco de dados.

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

Dados da consulta

Agora, vamos criar um código para extrair todas essas informações do nosso banco de dados.

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

Abaixo está a captura de tela combinada de todos os códigos acima.

peewee Python ((Como funciona: um guia para desenvolvedores)): Figura 2 - Saída de dados da consulta

Começando

Primeiramente, você precisará importar o Peewee para obter recursos relacionados ao mapeamento objeto-relacional e o IronPDF para a geração de PDFs. Este tutorial pressupõe que você já tenha conhecimento de Python e de como configurar o IronPDF para funcionar em Python através do Python .NET e do Peewee. Os passos a seguir irão orientá-lo na criação de uma aplicação simples utilizando o Peewee para interagir com um banco de dados, e o IronPDF será utilizado para gerar um relatório em PDF.

O que é o IronPDF?

O módulo IronPDF for Python é uma biblioteca avançada para criar, editar e ler PDFs. Oferece uma grande variedade de funcionalidades para que os programadores possam realizar diversas atividades programáveis ​​com PDFs. Isso inclui a conversão de arquivos HTML em arquivos PDF para fins de edição de PDFs existentes. Isso tornará mais flexível e fácil gerar ótimos relatórios em formato PDF. Programas que geram e processam PDFs dinamicamente podem tirar proveito disso.

peewee Python ((Como funciona: um guia para desenvolvedores)): Figura 3 - IronPDF

Conversão de HTML para PDF

Quaisquer dados HTML, independentemente da data, podem ser facilmente convertidos em um documento PDF com os recursos do IronPDF. Além disso, oferece ao usuário uma plataforma para criar publicações em PDF extremamente inovadoras e atraentes diretamente a partir de material online, utilizando todos os recursos mais recentes de HTML5, CSS3 e JavaScript.

Gerar e editar PDFs

Você pode gerar novos documentos PDF com texto, imagens, tabelas, etc., inclusive com a ajuda de uma linguagem de programação. Você pode abrir documentos previamente preparados e editá-los usando o IronPDF, adicionando ainda mais personalização. Qualquer conteúdo de um documento PDF pode ser adicionado, alterado ou removido a qualquer momento.

Design e estilo complexos

Como possui um estilo de conteúdo inerente para PDFs, layouts complexos podem ser controlados com diversas fontes, cores e outros elementos de design que tornam isso possível. Além disso, o JavaScript não pode ser usado para lidar com material dinâmico em PDFs, o que dificulta a renderização de conteúdo HTML.

Instale o IronPDF

O IronPDF pode ser instalado usando o Pip. O comando de instalação será como mostrado abaixo:

pip install ironpdf
pip install ironpdf
SHELL

Combine Peewee com IronPDF

O Peewee ORM pode ser criado e configurado, dados podem ser inseridos e relatórios em PDF podem ser gerados combinando todas as etapas no arquivo 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

Este código mostra como usar Python .NET para combinar o IronPDF, uma biblioteca Python para criação de PDFs, com o Peewee, um ORM leve for Python. Utilizando o Peewee, primeiro cria-se um banco de dados SQLite e definem-se os modelos de Usuário e Tweet com os campos apropriados. Após a criação das tabelas do banco de dados, dados de exemplo são adicionados a elas. Em seguida, usando a classe ChromePdfRenderer do IronPDF, a função generate_pdf recupera esses dados e os transforma em uma string HTML que é então renderizada como um PDF.

peewee Python ((Como funciona: um guia para desenvolvedores)): Figura 4 - Saída do console

O diretório de trabalho atual é onde o PDF está armazenado. Aproveitando as vantagens do Peewee para administração de banco de dados e do IronPDF para produzir documentos PDF de alta qualidade, essa configuração permite interações fluidas com o banco de dados e a geração automatizada de relatórios em PDF dentro de uma aplicação Python.

peewee Python ((Como funciona: um guia para desenvolvedores)): Figura 5 - Saída em PDF

Conclusão

Isso proporcionará uma opção confiável para desenvolvedores Python que desejam gerenciar bancos de dados e gerar documentos PDF dinâmicos, assim que o IronPDF for integrado ao Peewee. Com os recursos ORM fáceis de usar, as interações com o banco de dados são simplificadas no Peewee, permitindo que um desenvolvedor crie e altere esquemas de banco de dados com muito mais facilidade. Por outro lado, o IronPDF possui um pacote que facilita a conversão de conteúdo HTML em relatórios PDF de alta qualidade.

Essa combinação será, portanto, muito útil em aplicações que geram relatórios automáticos usando dados dinâmicos obtidos de bancos de dados. Os desenvolvedores podem aproveitar a facilidade com que o Peewee define modelos e executa consultas, e a capacidade do IronPDF de criar PDFs de forma poderosa, para aumentar efetivamente a eficiência e a produtividade. Peewee e IronPDF, em conjunto, transformam-se em ferramentas flexíveis e robustas para atender a uma ampla variedade de necessidades de aplicação de diversas maneiras dentro do universo de desenvolvimento Python. Essas tarefas podem variar desde a emissão de faturas até relatórios sobre documentos especiais.

A combinação do IronPDF com outros produtos da Iron Software ajudará a fornecer soluções de software superiores para clientes que oferecem soluções complexas aos usuários. Isso, para seu próprio benefício, simplificará a tarefa de aprimorar as operações de projetos e procedimentos em geral.

Além das funcionalidades principais, o IronPDF conta com documentação detalhada, uma comunidade ativa e um ciclo regular de atualizações. Com base nas informações dos parágrafos anteriores, um desenvolvedor pode considerar a Iron Software uma parceira confiável para projetos modernos de desenvolvimento de software. Para conhecer todos os recursos desta biblioteca, o IronPDF oferece um período de teste gratuito para desenvolvedores. Nos próximos dias, você garantirá que obtenha o valor total do seu $799 gasto na taxa de licença.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim