Funktionen¶
Entwickelt für FastAPI¶
SQLModel wurde vom selben Autor von FastAPI entwickelt.
Es folgt dem gleichen Design und den gleichen Ideen und wurde entwickelt, um die intuitivste Art und Weise zu sein, mit SQL-Datenbanken in FastAPI-Anwendungen zu interagieren.
SQLModel ist jedoch vollständig unabhängig von FastAPI und kann mit jeder anderen Art von Anwendung verwendet werden. Sie können trotzdem von seinen Funktionen profitieren.
Nur modernes Python¶
Alles basiert auf Standard modernen Python Typ-Annotationen. Keine neue Syntax zu lernen. Nur Standard-Modern-Python.
Wenn Sie eine 2-minütige Auffrischung benötigen, wie Sie Python-Typen verwenden (auch wenn Sie SQLModel oder FastAPI nicht verwenden), schauen Sie sich den FastAPI-Tutorial-Abschnitt an: Python-Typen Einführung.
Sie erhalten auch eine 20-Sekunden-Auffrischung im Abschnitt Tutorial - Benutzerhandbuch: Erste Schritte.
Editor-Unterstützung¶
SQLModel wurde entwickelt, um einfach und intuitiv zu bedienen zu sein, um die beste Entwicklungserfahrung mit Autovervollständigung überall zu gewährleisten.
So könnte Ihr Editor Ihnen helfen

- in PyCharm

Sie erhalten Autovervollständigung für alles, während Sie das minimale Code schreiben.
Sie müssen nicht mehr raten, welche Typen verschiedene Attribute in Ihren Modellen haben, ob sie None sein könnten usw. Ihr Editor kann Ihnen bei allem helfen, da SQLModel auf Standard-Python-Typ-Annotationen basiert.
SQLModel übernimmt PEP 681 für Python-Typ-Annotationen, um die beste Entwicklererfahrung zu gewährleisten, sodass Sie Inline-Fehler und Autovervollständigung erhalten, selbst wenn Sie neue Modellinstanzen erstellen.

Kurz¶
SQLModel hat sinnvolle Standardwerte für alles, mit optionalen Konfigurationen überall.
Aber standardmäßig funktioniert alles "einfach so".
Sie können mit den einfachsten (und intuitivsten) Typ-Annotationen für Ihre Daten beginnen.
Und später können Sie alles mit der vollen Leistungsfähigkeit von SQLAlchemy und Pydantic feinabstimmen.
Basiert auf Pydantic¶
SQLModel basiert auf Pydantic und behält das gleiche Design, die gleiche Syntax und die gleichen Ideen.
Im Grunde ist ✨ ein SQLModel-Modell auch ein Pydantic-Modell. ✨
Es wurde viel Forschung und Mühe darauf verwendet, dies zu erreichen.
Das bedeutet, dass Sie alle Funktionen von Pydantic erhalten, einschließlich automatischer Datenvalidierung, Serialisierung und Dokumentation. Sie können SQLModel genauso verwenden wie Pydantic.
Sie können sogar SQLModel-Modelle erstellen, die *keine* SQL-Tabellen darstellen. In diesem Fall wären sie dasselbe wie Pydantic-Modelle.
Dies ist insbesondere nützlich, da Sie nun ein SQL-Datenbankmodell erstellen können, das von einem anderen Nicht-SQL-Modell *erbt*. Sie können dies verwenden, um Code-Duplizierung zu reduzieren. Es wird auch Ihren Code konsistenter machen, die Editor-Unterstützung verbessern usw.
Dies macht es zur perfekten Kombination für die Arbeit mit SQL-Datenbanken in FastAPI-Anwendungen. 🚀
Sie erfahren später im Tutorial mehr über die Kombination verschiedener Modelle.
Basiert auf SQLAlchemy¶
SQLModel basiert auch auf SQLAlchemy und verwendet es für alles.
Im Grunde ist ✨ ein SQLModel-Modell auch ein SQLAlchemy-Modell. ✨
Es wurde viel Forschung und Mühe darauf verwendet, dies zu erreichen. Insbesondere wurde viel Aufwand und Experimentierfreude investiert, um ein einzelnes Modell gleichzeitig zu einem SQLAlchemy-Modell und einem Pydantic-Modell zu machen.
Das bedeutet, dass Sie die gesamte Leistungsfähigkeit, Robustheit und Sicherheit von SQLAlchemy erhalten, der meistverwendeten Datenbankbibliothek in Python.
SQLModel bietet eigene Hilfsmittel, um die Entwicklererfahrung zu verbessern, aber im Grunde verwendet es alles von SQLAlchemy.
Sie können sogar SQLModel-Modelle mit SQLAlchemy-Modellen kombinieren.
SQLModel ist darauf ausgelegt, die häufigsten Anwendungsfälle zu erfüllen und für diese Fälle so einfach und bequem wie möglich zu sein, und bietet die beste Entwicklererfahrung.
Aber wenn Sie exotischere Anwendungsfälle haben, die komplexere Funktionen erfordern, können Sie SQLAlchemy immer noch direkt in SQLModel einbinden und alle seine Funktionen in Ihrem Code nutzen.
Getestet¶
- 100% Testabdeckung (derzeit 97%, wird in den kommenden Tagen/Wochen 100% erreichen).
- 100% typ-annotierter Codebestand.
