Peewee – leichtgewichtiges ORM für Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Die Arbeit mit einer Datenbank ist ein wesentlicher Bestandteil jeder modernen Anwendung. Für Python gibt es zahlreiche ORM-Bibliotheken, die eine komfortable Interaktion mit SQL-Datenbanken ermöglichen. Eine der einfachsten und kompaktesten ist Peewee. Sie eignet sich ideal für kleine Projekte, Skripte und sogar Microservices.

Peewee – eine leichtgewichtige ORM – bietet alles, was Sie zur Beschreibung von Modellen, zur Ausführung von Abfragen, zur Arbeit mit Transaktionen und zur Integration mit Web-Frameworks benötigen – und das bei einfacher Erlernbarkeit und Implementierung.

Funktionsweise von ORM und die Position von Peewee

Was ist ORM?

ORM (Object-Relational Mapping) ist eine Technologie, die es ermöglicht, mit Datenbanken über Objekte der Programmiersprache zu arbeiten. Anstatt SQL-Abfragen zu schreiben, erstellen und interagieren Sie mit Python-Klassen, und das ORM wandelt diese in SQL um.

ORM bietet eine Abstraktionsebene über SQL, was den Code lesbarer und weniger fehleranfällig macht. Die Hauptvorteile der Nutzung von ORM sind:

  • Automatische Generierung von SQL-Abfragen
  • Sicherheit vor SQL-Injection
  • Portabilität zwischen verschiedenen DBMS
  • Komfortable Arbeit mit Python-Objekten

Wann Peewee die richtige Wahl ist

Peewee ist eine ausgezeichnete Wahl in folgenden Fällen:

  • Wenn ein einfaches und leichtes Werkzeug benötigt wird
  • Wenn das Projekt klein oder experimentell ist
  • Wenn Entwicklungsgeschwindigkeit ohne komplexe Konfiguration wichtig ist
  • Für Prototyping und kleine Webanwendungen
  • Für Desktop-Anwendungen mit lokaler Datenbank

Installation und grundlegende Einrichtung

Peewee installieren

Peewee kann über pip installiert werden:

pip install peewee

Für die Arbeit mit verschiedenen DBMS sind zusätzliche Pakete erforderlich:

# Für PostgreSQL
pip install psycopg2-binary

# Für MySQL
pip install PyMySQL

# Für SQLite (in Python enthalten)
# Es sind keine zusätzlichen Pakete erforderlich

Verbindung zur Datenbank herstellen

Peewee unterstützt mehrere Datenbanktypen:

from peewee import SqliteDatabase, PostgresqlDatabase, MySQLDatabase

# SQLite
db = SqliteDatabase('my_database.db')

# PostgreSQL
db = PostgresqlDatabase('mydb', user='username', password='password', host='localhost', port=5432)

# MySQL
db = MySQLDatabase('mydb', user='username', password='password', host='localhost', port=3306)

Erstellen von Datenmodellen

Basis-Modell

from peewee import Model, CharField, DateField, IntegerField, TextField

class BaseModel(Model):
    class Meta:
        database = db

class Author(BaseModel):
    name = CharField(max_length=100)
    birth_date = DateField()
    bio = TextField(null=True)
    
class Book(BaseModel):
    title = CharField(max_length=200)
    isbn = CharField(max_length=13, unique=True)
    pages = IntegerField()
    publication_year = IntegerField()
    author = ForeignKeyField(Author, backref='books')

Tabellen erstellen

db.connect()
db.create_tables([Author, Book])

Feldtypen in Peewee

Wichtige Feldtypen

Empfehlungen

Feldtyp Beschreibung Parameter
CharField Zeichenkette mit Längenbegrenzung max_length, unique, null
TextField Text ohne Längenbegrenzung null
IntegerField Ganze Zahl null, unique
FloatField Gleitkommazahl null, unique
BooleanField Boolescher Wert null, default
DateField Datum null, default
DateTimeField Datum und Uhrzeit