Przejdź do treści stopki
POMOC DOTYCZąCA JęZYKA PYTHON

peewee Python ((Jak działa: Przewodnik dla programistów))

Peewee to niewielki, ekspresyjny ORM, którego celem jest ułatwienie interakcji z bazą danych w języku Python. Jest lekki, łatwy w użyciu i wystarczająco niezawodny, aby obsługiwać złożone zapytania lub schematy baz danych. Peewee obsługuje SQLite, MySQL i PostgreSQL dzięki intuicyjnej składni, co sprawia, że jest bardzo łatwe do opanowania, a tym samym cieszy się dużą popularnością wśród studentów i profesjonalistów.

IronPDF to biblioteka języka Python, która umożliwia kompleksową obsługę dokumentów PDF: tworzenie, odczytywanie, edycję i zarządzanie. Korzystając z Python .NET, można używać IronPDF w aplikacjach Python, uzyskując w ten sposób bardzo rozbudowane możliwości generowania plików PDF. To połączenie jest zatem bardzo przydatne przy generowaniu raportów PDF na podstawie danych pobranych z baz danych.

Ta integracja łączy Peewee z IronPDF for Python w celu tworzenia aplikacji przez programistów Pythona w taki sposób, aby możliwe było wydajne zarządzanie bazami danych i wyszukiwanie w nich, a także generowanie dynamicznych, opartych na danych dokumentów PDF. To połączenie zapewnia idealny przebieg pracy od pobierania danych po generowanie raportów, oferując tym samym zestaw bardzo wydajnych narzędzi do tworzenia profesjonalnej i zautomatyzowanej dokumentacji. Począwszy od prostych raportów biznesowych, takich jak faktury, aż po złożone raporty, Peewee i IronPDF razem zapewniają bezbłędne rozwiązanie do generowania plików PDF na podstawie baz danych w dowolnej aplikacji napisanej w języku Python.

Czym jest PeeWee Python?

Peewee to niewielki, ekspresyjny ORM dla języka Python, ułatwiający pracę z bazą danych. Umożliwia łatwe tworzenie modeli oraz ułatwia tworzenie typowych zapytań, takich jak wyszukiwanie, dodawanie, aktualizowanie i usuwanie wielu rekordów w bazie danych. Peewee może być wykorzystywane w wielu różnych zastosowaniach, ponieważ obsługuje różne backendy: SQLite, MySQL i PostgreSQL.

Jedną z zalet Peewee jest jego prostota i łatwość obsługi. Programistom bardzo łatwo jest tworzyć modele jako klasy w języku Python, a wszystkie zapytania do bazy danych są wykonywane jako kod w języku Python dzięki nieskomplikowanemu interfejsowi API. Pomimo tej prostoty Peewee jest niezwykle potężne, ponieważ obsługuje skomplikowane zapytania, połączenia i złożone relacje, a także wspiera pulę połączeń.

peewee Python ((Jak to działa: przewodnik dla programistów)): Rysunek 1 — Peewee

Elastyczność i minimalistyczny projekt sprawiają, że Peewee jest bardzo przydatne zarówno w małych projektach, jak i większych aplikacjach, gdzie łatwość użytkowania i szybkie tworzenie oprogramowania mają kluczowe znaczenie. Obsługa złożonych interakcji z bazami danych przy użyciu bardzo niewielkiej ilości kodu szablonowego sprawiła, że stał się on atrakcyjnym ORM dla każdego programisty Pythona.

Funkcje Peewee Python

Peewee to lekka, ekspresyjna biblioteka ORM dla języka Python, umożliwiająca łatwą interakcję z bazą danych. Poniżej wymieniono kilka jego ważnych funkcji:

  • Łatwe i proste: Peewee posiada bardzo łatwe i intuicyjne API. Dzięki temu programiści mogą bez trudu definiować modele wraz ze wszystkimi ich standardowymi atrybutami oraz łatwo komunikować się z bazą danych za pomocą kodu w języku Python.

  • Obsługa wielu baz danych: Obsługuje SQLite, MySQL, PostgreSQL i CockroachDB.

  • Wyrazista składnia zapytań: Peewee posiada przejrzystą i wyrazistą składnię do wysyłania zapytań do baz danych; możemy używać tych samych operacji zapytań, takich jak Select, Create, Update i zapytanie delete, umożliwiając programistom pisanie złożonych zapytań przy użyciu konstrukcji języka Python.

  • Definicja modelu: W Peewee modele baz danych definiuje się jako klasy w języku Python. Pola w klasie odpowiadają kolumnom bazy danych. Ta definicja gwarantuje, że jeśli wprowadzimy jakąkolwiek zmianę w schemacie bazy danych, równoważne zmiany zostaną wprowadzone w kodzie Pythona — i odwrotnie.

  • Relacje: Obsługuje wszystkie relacje — w tym klucze obce, relacje jeden do jednego i wiele do wielu — potrzebne do modelowania złożonych danych.

  • Pula połączeń: Peewee posiada wbudowaną pulę połączeń, która poprawia wydajność poprzez ponowne wykorzystanie połączeń z bazą danych.

  • Transakcje: Transakcje atomowe gwarantują wykonanie zestawu operacji na bazie danych — ale w przypadku niepowodzenia którejkolwiek z nich wszystkie są cofane, aby zachować poprawność danych.

  • Sygnały i haki: Peewee udostępnia sygnały i haki do implementacji niestandardowych zachowań przed lub po niektórych zdarzeniach, takich jak zapisanie lub usunięcie rekordu.

  • Migracje: Ponadto integruje to biblioteki stron trzecich z główną biblioteką Peewee-migrate, a tym samym zarządza migracjami schematów baz danych. Pomoże to w płynnym przejściu między wersjami bazy danych.

  • Rozszerzalność: Peewee można łatwo rozszerzyć o niestandardowe pola, zapytania lub kilka innych funkcji w zależności od konkretnych potrzeb aplikacji.

  • Rozszerzenia Playhouse: Moduł ten zawiera szereg rozszerzeń do biblioteki Playhouse, w tym wyszukiwanie pełnotekstowe dla SQLite, kilka funkcji specyficznych dla PostgreSQL oraz kilka narzędzi do zarządzania połączeniami.

  • Obsługa operacji asynchronicznych: aiopeewee to rozszerzenie, które sprawia, że Peewee obsługuje operacje asynchroniczne odpowiednie dla aplikacji o wysokiej wydajności.

Utwórz i skonfiguruj Peewee

Poniższe kroki pomogą Ci rozpocząć pracę z Peewee w dowolnym projekcie w języku Python, konfigurując prostą aplikację przy użyciu ORM Peewee.

Zainstaluj Peewee

Najpierw zainstaluj Peewee za pomocą pip:

pip install peewee
pip install peewee
SHELL

Zdefiniuj swoje modele

Pamiętaj, aby zdefiniować modele baz danych w pliku Python o nazwie app.py. W tym przypadku, dla uproszczenia, zrobimy to samo, używając 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

Wstaw dane

Teraz dodajmy trochę danych do naszej bazy danych.

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

Dane zapytania

Teraz napiszmy kod, który pobierze wszystkie te informacje z naszej bazy danych.

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

Poniżej znajduje się zrzut ekranu zawierający wszystkie powyższe kody.

peewee Python ((Jak to działa: Przewodnik dla programistów)): Rysunek 2 – Wynik zapytania o dane

Pierwsze kroki

Po pierwsze, należy zaimportować bibliotekę Peewee w celu uzyskania funkcji związanych z mapowaniem obiektowo-relacyjnym oraz bibliotekę IronPDF do generowania plików PDF. W tym samouczku zakładamy, że masz już wiedzę na temat języka Python oraz tego, jak skonfigurować zarówno IronPDF do pracy w Pythonie poprzez Python .NET, jak i Peewee. Poniższe kroki poprowadzą Cię przez proces tworzenia prostej aplikacji wykorzystującej Peewee do interakcji z bazą danych, a do wygenerowania raportu PDF zostanie użyty IronPDF.

Czym jest IronPDF?

Moduł IronPDF dla języka Python to zaawansowana biblioteka służąca do tworzenia, edycji i odczytu plików PDF. Oferuje wiele funkcji, dzięki czemu programiści mogą wykonywać wiele czynności związanych z plikami PDF. Obejmuje to konwersję plików HTML do formatu PDF w celu edycji istniejących plików PDF. Dzięki temu będzie bardziej elastyczny i ułatwi generowanie doskonałych raportów w formacie PDF. Mogą z tego skorzystać programy dynamicznie generujące i przetwarzające pliki PDF.

peewee Python ((Jak to działa: Przewodnik dla programistów)): Rysunek 3 — IronPDF

Konwersja HTML do PDF

Wszelkie dane HTML, niezależnie od daty, można łatwo przekonwertować na dokument PDF dzięki możliwościom IronPDF. Ponadto zapewnia użytkownikowi platformę do tworzenia niezwykle innowacyjnych i przyciągających uwagę publikacji w formacie PDF bezpośrednio z materiałów online, wykorzystując jednocześnie wszystkie najnowsze możliwości HTML5, CSS3 i JavaScript.

Generowanie i edycja plików PDF

Można generować nowe dokumenty PDF zawierające tekst, obrazy, tabele itp., nawet przy pomocy języka programowania. Możesz wcześniej otworzyć przygotowane dokumenty i edytować je za pomocą IronPDF, dodając dalsze elementy personalizacji. W dowolnym momencie można dodawać, zmieniać lub usuwać dowolną zawartość dokumentu PDF.

Złożony projekt i stylizacja

Ponieważ format PDF ma z natury styl treści, złożone układy można kontrolować za pomocą różnych czcionek, kolorów i innych elementów projektowych, które to umożliwiają. Ponadto nie można stosować JavaScript do obsługi dynamicznych elementów w plikach PDF w celu ułatwienia renderowania treści HTML.

Zainstaluj IronPDF

IronPDF można zainstalować za pomocą Pip. Polecenie instalacyjne będzie wyglądało tak, jak pokazano poniżej:

pip install ironpdf
pip install ironpdf
SHELL

Połącz Peewee z IronPDF

Można utworzyć i skonfigurować ORM Peewee, wstawiać dane oraz generować raporty PDF, łącząc wszystkie etapy w pliku 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

Ten kod pokazuje, jak używać Python .NET do połączenia IronPDF, biblioteki Python do tworzenia plików PDF, z Peewee, lekkim ORM dla Python. Korzystając z Peewee, najpierw tworzy bazę danych SQLite i definiuje modele User oraz Tweet wraz z odpowiednimi polami. Po utworzeniu tabel bazy danych dodaje się do nich przykładowe dane. Następnie, korzystając z klasy ChromePdfRenderer biblioteki IronPDF, funkcja generate_pdf pobiera te dane i przekształca je w ciąg znaków HTML, który jest następnie renderowany jako plik PDF.

peewee Python ((Jak to działa: Przewodnik dla programistów)): Rysunek 4 – Wynik konsoli

Bieżący katalog roboczy to miejsce, w którym przechowywany jest plik PDF. Wykorzystując zalety Peewee do administrowania bazami danych oraz IronPDF do tworzenia dopracowanych dokumentów PDF, ta konfiguracja umożliwia płynną interakcję z bazami danych oraz automatyczne generowanie raportów PDF w ramach aplikacji napisanej w języku Python.

peewee Python ((Jak to działa: Przewodnik dla programistów)): Rysunek 5 – Wynik w formacie PDF

Wnioski

Dzięki temu programiści Pythona, którzy chcą zarządzać bazami danych i generować dynamiczne dokumenty PDF, będą mieli niezawodną opcję po zintegrowaniu IronPDF z Peewee. Dzięki łatwym w użyciu funkcjom ORM interakcje z bazą danych w Peewee są uproszczone, co pozwala programistom na łatwe tworzenie i modyfikowanie schematów baz danych. Z drugiej strony, IronPDF oferuje pakiet, który ułatwia przekształcanie treści HTML w wysokiej jakości raporty PDF.

To połączenie będzie zatem bardzo przydatne w aplikacjach, które generują automatyczne raporty przy użyciu danych dynamicznych pobieranych z baz danych. Programiści mogą wykorzystać łatwość definiowania modeli i wykonywania zapytań w Peewee oraz potężne możliwości tworzenia plików PDF w IronPDF, aby skutecznie zwiększyć wydajność i produktywność. Peewee i IronPDF w połączeniu stają się elastycznymi i potężnymi narzędziami, które pozwalają zaspokoić szeroki wachlarz potrzeb aplikacyjnych na wiele sposobów w świecie programowania w języku Python. Mogą one obejmować zarówno fakturowanie, jak i raporty dotyczące specjalnych dokumentów.

Połączenie IronPDF z innymi produktami Iron Software pomoże zapewnić klientom doskonałe rozwiązania programowe, które oferują użytkownikom złożone rozwiązania. To, z korzyścią dla Państwa, uprości zadanie usprawnienia realizacji projektów i procedur w ujęciu ogólnym.

Oprócz podstawowych funkcji, IronPDF oferuje szczegółową dokumentację, aktywną społeczność oraz regularny cykl aktualizacji. Na podstawie powyższych informacji zawartych w poprzednich akapitach programista może uznać Iron Software za niezawodnego partnera w nowoczesnych projektach programistycznych. Aby poznać wszystkie funkcje tej biblioteki, IronPDF oferuje bezpłatną wersję próbną dla programistów. W najbliższych dniach upewnisz się, że w pełni wykorzystasz $799 wydane na opłatę licencyjną.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie