Zum Inhalt springen

SQLModel

SQLModel SQLModel

SQLModel, SQL-Datenbanken in Python, entwickelt für Einfachheit, Kompatibilität und Robustheit.

Test Publish Coverage Package version


Dokumentation: https://sqlmodel.de

Quellcode: https://github.com/fastapi/sqlmodel


SQLModel ist eine Bibliothek für die Interaktion mit SQL-Datenbanken aus Python-Code heraus, mit Python-Objekten. Sie ist intuitiv, einfach zu bedienen, hochgradig kompatibel und robust.

SQLModel basiert auf Python-Typannotationen und wird von Pydantic und SQLAlchemy angetrieben.

Die Hauptmerkmale sind

  • Intuitiv zu schreiben: Tolle Editor-Unterstützung. Vervollständigung überall. Weniger Zeit mit Debugging. Entwickelt für einfache Bedienung und schnelles Erlernen. Weniger Zeit mit dem Lesen von Dokumentationen.
  • Einfach zu bedienen: Es hat sinnvolle Standardwerte und leistet viel Arbeit im Hintergrund, um den von Ihnen geschriebenen Code zu vereinfachen.
  • Kompatibel: Es wurde entwickelt, um mit FastAPI, Pydantic und SQLAlchemy kompatibel zu sein.
  • Erweiterbar: Sie haben die volle Leistung von SQLAlchemy und Pydantic im Hintergrund.
  • Kurz: Reduzieren Sie Code-Duplizierung. Eine einzige Typannotation erledigt viel Arbeit. Keine Notwendigkeit, Modelle in SQLAlchemy und Pydantic zu duplizieren.

Sponsoren

SQL-Datenbanken in FastAPI

SQLModel wurde entwickelt, um die Interaktion mit SQL-Datenbanken in FastAPI-Anwendungen zu vereinfachen. Es wurde vom selben Autor entwickelt. 😁

Es kombiniert SQLAlchemy und Pydantic und versucht, den von Ihnen geschriebenen Code so weit wie möglich zu vereinfachen, wodurch Sie die **Code-Duplizierung auf ein Minimum** reduzieren können, aber gleichzeitig die **beste Entwicklererfahrung** erzielen.

SQLModel ist tatsächlich eine dünne Schicht über Pydantic und SQLAlchemy, sorgfältig entwickelt, um mit beiden kompatibel zu sein.

Voraussetzungen

Eine aktuelle und derzeit unterstützte Version von Python.

Da SQLModel auf Pydantic und SQLAlchemy basiert, sind diese erforderlich. Sie werden automatisch installiert, wenn Sie SQLModel installieren.

Installation

Stellen Sie sicher, dass Sie eine virtuelle Umgebung erstellen, diese aktivieren und dann SQLModel installieren, zum Beispiel mit

$ pip install sqlmodel
---> 100%
Successfully installed sqlmodel

Beispiel

Für eine Einführung in Datenbanken, SQL und alles andere, siehe die SQLModel-Dokumentation.

Hier ist ein kurzes Beispiel. ✨

Eine SQL-Tabelle

Stellen Sie sich vor, Sie haben eine SQL-Tabelle namens hero mit

  • id
  • name
  • secret_name
  • age

Und Sie möchten diese Daten haben

id name secret_name age
1 Deadpond Dive Wilson null
2 Spider-Boy Pedro Parqueador null
3 Rusty-Man Tommy Sharp 48

Ein SQLModel-Modell erstellen

Dann könnten Sie ein SQLModel-Modell wie dieses erstellen

from sqlmodel import Field, SQLModel


class Hero(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str
    secret_name: str
    age: int | None = None

Diese Klasse Hero ist ein SQLModel-Modell, das Äquivalent einer SQL-Tabelle im Python-Code.

Und jedes dieser Klassenattribute ist das Äquivalent jeder Tabellenspalte.

Zeilen erstellen

Dann könnten Sie jede Zeile der Tabelle als Instanz des Modells erstellen

hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48)

Auf diese Weise können Sie konventionellen Python-Code mit Klassen und Instanzen verwenden, die Tabellen und Zeilen darstellen, und auf diese Weise mit der SQL-Datenbank kommunizieren.

Editor-Unterstützung

Alles ist so konzipiert, dass Sie die bestmögliche Entwicklererfahrung mit der besten Editor-Unterstützung erhalten.

Einschließlich Autovervollständigung

Und Inline-Fehler

In die Datenbank schreiben

Sie können viel mehr über SQLModel lernen, indem Sie schnell dem Tutorial folgen. Aber wenn Sie jetzt einen Vorgeschmack darauf bekommen möchten, wie Sie all das zusammenfügen und in die Datenbank speichern können, können Sie Folgendes tun:

from sqlmodel import Field, Session, SQLModel, create_engine


class Hero(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str
    secret_name: str
    age: int | None = None


hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48)


engine = create_engine("sqlite:///database.db")


SQLModel.metadata.create_all(engine)

with Session(engine) as session:
    session.add(hero_1)
    session.add(hero_2)
    session.add(hero_3)
    session.commit()

Damit wird eine SQLite-Datenbank mit den 3 Helden gespeichert.

Aus der Datenbank auswählen

Dann könnten Sie Abfragen schreiben, um aus derselben Datenbank auszuwählen, zum Beispiel mit

from sqlmodel import Field, Session, SQLModel, create_engine, select


class Hero(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str
    secret_name: str
    age: int | None = None


engine = create_engine("sqlite:///database.db")

with Session(engine) as session:
    statement = select(Hero).where(Hero.name == "Spider-Boy")
    hero = session.exec(statement).first()
    print(hero)

Editor-Unterstützung überall

SQLModel wurde sorgfältig entwickelt, um Ihnen die beste Entwicklererfahrung und Editor-Unterstützung zu bieten, auch nach dem Auswählen von Daten aus der Datenbank

SQLAlchemy und Pydantic

Diese Klasse Hero ist ein SQLModel-Modell.

Aber gleichzeitig ✨ ist es ein SQLAlchemy-Modell ✨. Sie können es also kombinieren und mit anderen SQLAlchemy-Modellen verwenden, oder Sie könnten SQLAlchemy-Anwendungen leicht zu SQLModel migrieren.

Und gleichzeitig ✨ ist es auch ein Pydantic-Modell ✨. Sie können Vererbung damit verwenden, um alle Ihre Datenmodelle zu definieren und gleichzeitig Code-Duplizierung zu vermeiden. Das macht es sehr einfach, es mit FastAPI zu verwenden.

Lizenz

Dieses Projekt wird unter den Bedingungen der MIT-Lizenz vertrieben.