FastAPI-CRUD-Endpunkte mit Pydantic v2, Alembic und pytest-Tests
Erzeuge ein vollständiges FastAPI-Modul für eine Ressource: Pydantic-v2-Schemas, Modell und Alembic-Migration, paginierter CRUD-Router und pytest-Tests mit httpx. Entwickelt für ChatGPT, Claude, Gemini und Microsoft Copilot. Er enthält 5 anpassbare Variablen und lässt sich kostenlos mit einem Klick kopieren.
Fortgeschritten · Code · Redaktionelle Prüfung ausstehend
Prompt
Handle als erfahrener Backend-Entwickler mit Schwerpunkt Python, FastAPI und SQLAlchemy.
Ich möchte einer bestehenden FastAPI-Anwendung ein vollständiges Modul für {{ressource}} hinzufügen.
- Felder und Typen: {{felder}}
- Geschäftsregeln: {{regeln}}
- Datenbank: {{datenbank}}
- Datenzugriff: {{zugriff}}
Liefere in dieser Reihenfolge:
1. Die Dateistruktur (Router, Schemas, Modell, Service oder Repository, Tests) mit einem Satz zur Begründung der Aufteilung.
2. Getrennte Pydantic-v2-Schemas für Anlegen, Teilaktualisierung und Antwort, mit Validierungen (`Field`, `field_validator`, `model_validator`), die die Geschäftsregeln durchsetzen.
3. Das Datenbankmodell und die passende Alembic-Migration, mit Indizes und Unique-Constraints, wo sinnvoll.
4. Einen Router mit paginierter, filterbarer Liste, Detailansicht, Anlegen, Teilaktualisierung (PATCH) und Löschen. Verwende korrekte Statuscodes (201, 204, 404, 409, 422) und auf jedem Endpunkt ein `response_model`.
5. Eine per `Depends` injizierte Datenbank-Session ohne globalen Zustand und mit klar abgegrenzten Transaktionen.
6. Tests mit pytest und `httpx.AsyncClient` (oder `TestClient` bei synchronem Zugriff): Normalfall, Validierung, nicht vorhandene Ressource und Konflikt mit einer Geschäftsregel, gegen eine isolierte Testdatenbank.
7. Befehle zum Starten der App, Anwenden der Migration und Ausführen der Tests.
Einschränkungen:
- Python 3.11 oder neuer, durchgehend typisiert, keine unnötigen Abhängigkeiten.
- Erfinde keine Felder oder Regeln: Wenn etwas unklar ist, frag mich vor dem Code oder markiere es mit [AUSFÜLLEN].
- Nenne die Entscheidungen, die vom Rest meines Projekts abhängen (Authentifizierung, Konfiguration, Tabellennamen).
Format: ein Codeblock pro Datei mit dem Pfad als Überschrift, am Ende eine Liste der Annahmen.So verwenden Sie ihn
- Beschreibe die Ressource mit ihren echten Feldern und den Regeln, die du heute von Hand prüfst.
- Wähle Datenbank und Zugriffsart (asynchrones oder synchrones SQLAlchemy, SQLModel).
- Übernimm die Dateien, erzeuge die Migration und führe
pytestaus, bevor du mergst. - Wenn dein Projekt feste Ordnerkonventionen hat, füge sie ein, damit der Code sie einhält.
Anwendungsbeispiel
Ressource: Tischreservierungen · Felder: Gast, Datum und Uhrzeit, Personenzahl · Regel: max. 40 Gäste pro Zeitfenster · PostgreSQL mit asynchronem SQLAlchemy.
Beispielergebnis
2. Pydantic-v2-Schemas — app/reservierungen/schemas.py
from datetime import datetime, timedelta, timezone
from enum import Enum
from pydantic import BaseModel, Field, field_validator
class ReservierungStatus(str, Enum):
offen = "offen"
bestaetigt = "bestaetigt"
storniert = "storniert"
class ReservierungCreate(BaseModel):
gast_name: str = Field(min_length=1, max_length=120)
telefon: str = Field(pattern=r"^\+?[0-9 ]{7,20}$")
beginn: datetime
personen: int = Field(ge=1, le=12)
@field_validator("beginn")
@classmethod
def im_buchungsfenster(cls, v: datetime) -> datetime:
if v.tzinfo is None:
raise ValueError("Zeitpunkt braucht eine Zeitzone")
jetzt = datetime.now(timezone.utc)
if v < jetzt or v > jetzt + timedelta(days=60):
raise ValueError("Reservierung nur zwischen heute und +60 Tagen")
return v
class ReservierungUpdate(BaseModel):
beginn: datetime | None = None
personen: int | None = Field(default=None, ge=1, le=12)
status: ReservierungStatus | None = None
Die Regel max. 40 Gäste pro 30-Minuten-Fenster braucht eine Datenbankabfrage und gehört deshalb nicht ins Schema: Der Service summiert die Personen des Fensters in derselben Transaktion und antwortet bei Überschreitung mit 409.
Annahmen
- Fenster beginnen um :00 und :30 → [AUSFÜLLEN], falls das Restaurant anders plant.
- Das Telefonformat ist nur ein Platzhalter…
Wichtige Fakten
- Kategorie
- Programmierung & Entwicklung · Python
- Ausgabetyp
- Code
- Niveau
- Fortgeschritten
- Entwickelt für
- ChatGPT, Claude, Gemini und Microsoft Copilot
- Verifiziert in
- Redaktionelle Prüfung ausstehend
- Variablen
- Ressource, Felder und Typen, Geschäftsregeln, Datenbank und Datenzugriff
- Sprache
- Deutsch
- Preis
- Kostenlos, ohne Anmeldung
- Aktualisiert
- 07.11.2026
Häufig gestellte Fragen
Warum drei Pydantic-Schemas für eine Ressource?
Anlegen, Aktualisieren und Antworten brauchen unterschiedliche Felder: Bei PATCH ist alles optional, die Antwort enthält ID und Zeitstempel. Die Trennung verhindert, dass interne Felder nach außen gelangen.
Gehören Geschäftsregeln ins Schema oder in den Service?
Format- und Bereichsprüfungen gehören in Pydantic. Regeln, die eine Datenbankabfrage brauchen, etwa die Kapazität eines Zeitfensters, gehören in den Service und liefern bei Konflikt 409.
Funktioniert das auch mit SQLModel?
Ja. Wähle SQLModel bei der Variable Datenzugriff; der Prompt passt Modelle und Schemas an und trennt trotzdem Ein- und Ausgabe.
Wofür ist dieser Prompt gedacht?
Erzeuge ein vollständiges FastAPI-Modul für eine Ressource: Pydantic-v2-Schemas, Modell und Alembic-Migration, paginierter CRUD-Router und pytest-Tests mit httpx.
Mit welchen KI-Tools funktioniert er?
Er ist für ChatGPT, Claude, Gemini und Microsoft Copilot entwickelt. Wir haben ihn in diesen Tools noch nicht überprüft, daher können die Ergebnisse variieren.
Wie passe ich den Prompt an?
Klicken Sie auf „Anpassen“ und füllen Sie die Variablen aus (Ressource, Felder und Typen, Geschäftsregeln, Datenbank und Datenzugriff). Der Text wird sofort aktualisiert und lässt sich anschließend mit einem Klick kopieren. Die Werte werden nur in Ihrem Browser gespeichert.
Brauche ich Erfahrung, um ihn zu verwenden?
Er ist für Fortgeschrittene: Es hilft, das Thema zu kennen, um guten Kontext zu liefern und das Ergebnis kritisch zu prüfen.
Ist dieser Prompt kostenlos?
Ja. Jeder Prompt von HomeCasa Prompts ist kostenlos, ohne Anmeldung und ohne Abonnement. Sie können ihn auch in beruflichen Projekten verwenden.
Kann ich der KI-Ausgabe vertrauen?
Betrachten Sie sie als hochwertigen Entwurf: Prüfen Sie Daten, Zahlen und wichtige Aussagen immer, bevor Sie etwas veröffentlichen oder Entscheidungen treffen.