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
| 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 |