Zum Fußzeileninhalt springen
PYTHON-HILFE

peewee Python ((Wie es funktioniert: Ein Leitfaden für Entwickler))

Peewee ist ein kleiner, ausdrucksstarker ORM, der darauf abzielt, die Interaktion mit der Datenbank in Python zu erleichtern. Es ist leicht, einfach zu bedienen und selbstbewusst genug, um komplexe Abfragen oder Datenbankschemata zu unterstützen. Peewee unterstützt SQLite, MySQL und PostgreSQL mit intuitiver Syntax, was das Lernen sehr einfach macht und es bei Schülern und Fachleuten sehr beliebt macht.

IronPDF ist eine Python-Bibliothek, die eine vollständige, durchgängige Bearbeitung von PDFs ermöglicht: erstellen, lesen, bearbeiten und verwalten. Mit Python .NET kann man IronPDF mit Python-Anwendungen verwenden und somit sehr starke PDF-Erstellungsmöglichkeiten ableiten. Diese Kombination ist daher sehr nützlich beim Erstellen von PDF-Berichten auf Basis von Daten, die aus Datenbanken abgerufen wurden.

Diese Integration kombiniert Peewee mit IronPDF zur Erstellung von Anwendungen für Python-Entwickler, sodass effizientes Datenbankmanagement und -abfragen zusammen mit der Erzeugung dynamischer, datengetriebener PDF-Dokumente möglich sind. Diese Kombination ermöglicht einen perfekten Workflow von der Datenabrufung bis zur Berichtserstellung und bietet daher ein sehr starkes Werkzeugset zur Erstellung professioneller und automatisierter Dokumentationen. Beginnend mit einfachen Geschäftsberichten wie Rechnungen bis hin zu komplexen Berichten bieten Peewee und IronPDF gemeinsam eine makellose Lösung für die datenbankgesteuerte PDF-Erstellung in jeder Python-Anwendung.

Was ist PeeWee Python?

Peewee ist ein kleiner, ausdrucksstarker ORM für Python, um die Arbeit mit einer Datenbank zu erleichtern. Es erstellt leicht Modelle und erleichtert die Erstellung allgemeiner Abfragen wie Suche, Hinzufügen, Aktualisieren und Löschen mehrerer Datensätze in der Datenbank. Peewee kann in vielen verschiedenen Anwendungsfällen verwendet werden, da es verschiedene Backends unterstützt: SQLite, MySQL und PostgreSQL.

Etwas, das man an Peewee mag, ist seine Einfachheit und Leichtigkeit. Es ist sehr einfach für einen Entwickler, Modelle als Klassen in Python zu erstellen, während alle Abfragen gegen die Datenbank dank einer unkomplizierten API als Python-Code ausgeführt werden. Trotz dieser Einfachheit ist Peewee super mächtig, da es Unterstützung für komplizierte Abfragen, Verknüpfungen und komplexe Beziehungen hat und Pooling unterstützt.

peewee Python ((Wie es funktioniert: Ein Leitfaden für Entwickler)): Abbildung 1 - Peewee

Die Flexibilität und minimalistische Gestaltung machen Peewee ziemlich nützlich für kleine Projekte und größere Anwendungen, bei denen Benutzerfreundlichkeit und schnelle Entwicklung entscheidend werden. Die Handhabung komplexer Datenbankinteraktionen mit sehr wenig Boilerplate-Code hat es zu einem attraktiven ORM für jeden Python-Entwickler gemacht.

Funktionen von Peewee Python

Peewee ist eine leichte, ausdrucksstarke ORM-Bibliothek für Python, um auf einfache Weise mit der Datenbank zu interagieren. Einige seiner wichtigen Funktionen sind unten aufgelistet:

  • Einfach und leicht: Peewee hat eine sehr einfache und intuitive API. Entwickler können Modelle mit allen ihren normalen Attributen ohne Probleme definieren und mithilfe von Python-Code mit der Datenbank einfach interagieren.

  • Mehrere Datenbanken: Es unterstützt SQLite, MySQL, PostgreSQL und CockroachDB.

  • Ausdrucksstarke Abfragesyntax: Peewee hat eine saubere und ausdrucksstarke Syntax für die Abfrage von Datenbanken; wir können dieselben Abfrageoperationen wie Select, Create, Update und eine Löschabfrage verwenden, sodass Entwickler harte Abfragen mit Pythonischen Konstrukten schreiben können.

  • Modell-Definition: Man definiert Datenbankmodelle als Python-Klassen in Peewee. Die Felder auf der Klasse entsprechen den Datenbankspalten. Diese Definition stellt sicher, dass, wenn jemand Änderungen in der Datenbankschema vornimmt, entsprechende Änderungen am Python-Code vorgenommen werden und umgekehrt.

  • Beziehungen: Es unterstützt alle Beziehungen, einschließlich Fremdschlüssel, Eins-zu-eins- und Viele-zu-viele-Beziehungen, die zur Modellierung komplexer Daten erforderlich sind.

  • Verbindungs-Pooling: Peewee kommt mit eingebautem Verbindungs-Pooling für verbesserte Leistung durch erneute Nutzung von Datenbankverbindungen.

  • Transaktionen: Atomare Transaktionen stellen sicher, dass ein Satz von Datenbankoperationen ausgeführt wird - sollte jedoch eine von ihnen fehlschlagen, werden alle zurückgesetzt, um die Gültigkeit Ihrer Daten zu gewährleisten.

  • Signale und Hooks: Peewee bietet Signale und Hooks zur Implementierung benutzerdefinierten Verhaltens vor oder nach bestimmten Ereignissen, wie Beim Speichern oder Löschen eines Datensatzes.

  • Migrationen: Darüber hinaus integriert dies Drittanbieter-Bibliotheken mit der wichtigsten, Peewee-migrate, und verwaltet somit Datenbank-Schema-Migrationen. Dies wird beim reibungslosen Übergang von Datenbankversionen helfen.

  • Erweiterbarkeit: Peewee kann leicht durch benutzerdefinierte Felder, Abfragen oder einige andere Funktionen je nach konkretem Anwendungsbedürfnisse erweitert werden.

  • Playhouse-Erweiterungen: Dieses Modul kommt mit einer Vielzahl von Erweiterungen für das Spielhaus, einschließlich Volltextsuche für SQLite, einige PostgreSQL-spezifische Funktionalitäten und einige Werkzeuge zur Verbindungsverwaltung.

  • Asynchroner Support: aiopeewee ist eine Erweiterung, die Peewee asynchrone Operationen ermöglicht, die für hochleistungsfähige Anwendungen geeignet sind.

Erstellen und Konfigurieren von Peewee

Die folgenden Schritte helfen Ihnen, mit Peewee in jedem Python-Projekt zu beginnen, indem Sie eine einfache Anwendung mit Peewee ORM einrichten.

Installieren Sie Peewee

Installieren Sie zuerst Peewee mit Pip:

pip install peewee
pip install peewee
SHELL

Definieren Sie Ihre Modelle

Stellen Sie sicher, dass Sie Ihre Datenbankmodelle in einer Python-Datei mit dem Namen app.py definieren. Hier werden wir dasselbe aus Gründen der Einfachheit mit SQLite tun.

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

Daten einfügen

Fügen wir nun einige Daten in unsere Datenbank ein.

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

Daten abfragen

Jetzt konstruieren wir etwas Code, um alle diese Informationen aus unserer Datenbank abzurufen.

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

Unten ist der kombinierte Screenshot aller obigen Codes.

peewee Python ((Wie es funktioniert: Ein Leitfaden für Entwickler)): Abbildung 2 - Query Data Output

Erste Schritte

Zuerst müssen Sie Peewee für Funktionen im Zusammenhang mit der objekte-relationalen Abbildung und IronPDF für die PDF-Erstellung importieren. Dieses Tutorial geht davon aus, dass Sie bereits Kenntnisse über Python haben und wissen, wie man sowohl IronPDF für die Arbeit in Python über Python .NET als auch Peewee einrichtet. Die folgenden Schritte führen Sie durch die Erstellung einer einfachen Anwendung mit Peewee zur Interaktion mit einer Datenbank und IronPDF wird verwendet, um einen PDF-Bericht zu generieren.

Was ist IronPDF?

Das IronPDF Python-Modul ist eine fortschrittliche Bibliothek zum Erstellen, Bearbeiten und Lesen von PDF-Dokumenten. Es bietet eine große Anzahl von Funktionen, damit Programmierer viele programmierbare Aktivitäten mit PDFs durchführen können. Dazu gehört die Umwandlung von HTML-Dateien in PDF-Dateien, um bestehende PDFs zu bearbeiten. Das macht es flexibler und einfacher, großartige Berichte im PDF-Format zu erstellen. Programme, die PDFs dynamisch erzeugen und verarbeiten, können davon profitieren.

peewee Python ((Wie es funktioniert: Ein Leitfaden für Entwickler)): Abbildung 3 - IronPDF

HTML zu PDF Konvertierung

Jede HTML-Datei, die zu jeder Zeit datiert ist, kann mit den Funktionen von IronPDF leicht in ein PDF-Dokument umgewandelt werden. Es bietet dem Benutzer außerdem eine Plattform, um extrem innovative und auffällige PDF-Veröffentlichungen direkt aus Online-Material zu erstellen, während alle neuesten Funktionen von HTML5, CSS3 und JavaScript genutzt werden.

PDFs erzeugen und bearbeiten

Sie könnten neue PDF-Dokumente mit Text, Bildern, Tabellen usw. generieren, sogar mit Hilfe einer Programmiersprache. Sie dürfen vorbereitete Dokumente im Voraus öffnen und sie mit IronPDF bearbeiten und weiter personalisieren. Jeder Inhalt eines PDF-Dokuments kann jederzeit hinzugefügt, geändert oder entfernt werden.

Komplexes Design und Styling

Da es einen eingebauten Stil für PDFs hat, können komplexe Layouts mit verschiedenen Schriftarten, Farben und anderen Designelementen gesteuert werden, die dies ermöglichen. Darüber hinaus kann JavaScript nicht angewendet werden, um dynamisches Material in PDFs zu behandeln, um eine einfache Darstellung von HTML-Inhalten zu ermöglichen.

Installieren Sie IronPDF

IronPDF kann mit Pip installiert werden. Der Installationsbefehl wird wie unten gezeigt sein:

pip install ironpdf
pip install ironpdf
SHELL

Kombinieren Sie Peewee mit IronPDF

Das Peewee ORM kann erstellt und konfiguriert, Daten eingefügt und PDF-Berichte erstellt werden, indem alle Stufen in die Datei app.py integriert werden.

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

Dieser Code zeigt, wie man Python .NET verwendet, um IronPDF, eine Python-Bibliothek zur PDF-Erstellung, mit Peewee, einem leichten ORM für Python, zu kombinieren. Mit Peewee wird zuerst eine SQLite-Datenbank erstellt und die Modelle User und Tweet mit den entsprechenden Feldern definiert. Nachdem die Datenbanktabellen erstellt wurden, werden Beispiel-Daten in sie eingefügt. Dann ruft die generate_pdf Funktion mithilfe der ChromePdfRenderer-Klasse von IronPDF diese Daten ab und verwandelt sie in einen HTML-String, der dann als PDF gerendert wird.

peewee Python ((Wie es funktioniert: Ein Leitfaden für Entwickler)): Abbildung 4 - Konsolenausgabe

Das aktuelle Arbeitsverzeichnis ist der Ort, an dem das PDF gespeichert wird. Dieses Setup ermöglicht reibungslose Datenbankinteraktionen und automatisierte PDF-Berichtausgaben innerhalb einer Python-Anwendung mit den Vorteilen von Peewee für das Datenbankmanagement und IronPDF für die Erstellung polierter PDF-Dokumente.

peewee Python ((Wie es funktioniert: Ein Leitfaden für Entwickler)): Abbildung 5 - PDF-Ausgabe

Abschluss

Dies bietet eine zuverlässige Option für Python-Entwickler, die Datenbanken verwalten und dynamische PDF-Dokumente erstellen möchten, sobald IronPDF in Peewee integriert ist. Mit den benutzerfreundlichen ORM-Funktionen werden Datenbank-Interaktionen in Peewee erleichtert, wodurch ein Entwickler Datenbankschemas mit Leichtigkeit erstellen und ändern kann. Andererseits hat IronPDF ein Paket, das es einfacher macht, HTML-Inhalte in hochwertige PDF-Berichte zu übersetzen.

Diese Kombination wird daher sehr nützlich in Anwendungen sein, die automatische Berichte mit dynamischen Daten generieren, die aus Datenbanken abgerufen wurden. Entwickler können davon profitieren, wie einfach es ist, Modelle zu definieren und Abfragen mit Peewee auszuführen, und wie IronPDF leistungsstark PDFs erstellt, um Effizienz und Produktivität effektiv zu steigern. Als Kombination verwandeln sich Peewee und IronPDF in flexible und starke Werkzeuge, um einer Vielzahl von Anwendungsbedürfnissen in verschiedenen Weisen innerhalb des Python-Entwicklungsuniversums gerecht zu werden. Diese können von Rechnungsstellung bis zu Berichten über spezielle Dokumente reichen.

Die Kombination von IronPDF mit anderen Iron Software Produkten wird dazu beitragen, überlegene Softwarelösungen zu liefern, die komplexe Lösungen für Benutzer anbieten. Dies wird, zu Ihrem Vorteil, die Aufgabe vereinfachen, die Operationen von Projekten und Verfahren im Allgemeinen zu verbessern.

Neben den Kernfunktionen gibt es detaillierte Dokumentationen, eine aktive Community und einen regelmäßigen Update-Zyklus für IronPDF. Basierend auf den obigen Informationen in den vorherigen Absätzen kann ein Entwickler Iron Software als verlässlichen Partner für moderne Softwareentwicklungsprojekte betrachten. Um alle Funktionen dieser Bibliothek kennenzulernen, bietet IronPDF eine kostenlose Testversion für einen Entwickler an. In den folgenden Tagen werden Sie sicherstellen, dass Sie den vollen Gegenwert für Ihr $799 bezahlte Lizenzgebühr erhalten.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen