SQLAlchemy Unified Tutorial

Über dieses Dokument

Das SQLAlchemy Unified Tutorial ist zwischen den Core- und ORM-Komponenten von SQLAlchemy integriert und dient als einheitliche Einführung in SQLAlchemy als Ganzes. Für Benutzer von SQLAlchemy der 1.x-Serie, in der 2.0-Stil der Arbeit, verwendet die ORM Core-Style-Abfragen mit dem select()-Konstrukt, und transaktionale Semantiken zwischen Core-Verbindungen und ORM-Sitzungen sind äquivalent. Achten Sie auf die blauen Rahmenstile für jeden Abschnitt, die Ihnen sagen, wie „ORM-mäßig“ ein bestimmtes Thema ist!

Benutzer, die bereits mit SQLAlchemy vertraut sind und insbesondere diejenigen, die bestehende Anwendungen für die Arbeit unter der SQLAlchemy 2.0-Serie während der 1.4-Übergangsphase migrieren möchten, sollten sich auch das Dokument SQLAlchemy 2.0 - Major Migration Guide ansehen.

Für den Neuling hat dieses Dokument viel Detail, aber am Ende werden sie als Alchemist betrachtet.

SQLAlchemy wird als zwei verschiedene APIs präsentiert, von denen eine auf der anderen aufbaut. Diese APIs sind als Core und ORM bekannt.

SQLAlchemy Core ist die grundlegende Architektur von SQLAlchemy als „Datenbank-Toolkit“. Die Bibliothek bietet Werkzeuge für die Verwaltung der Konnektivität zu einer Datenbank, die Interaktion mit Datenbankabfragen und Ergebnissen sowie die programmatische Konstruktion von SQL-Anweisungen.

Abschnitte, die hauptsächlich nur Core sind, werden die ORM nicht referenzieren. In diesen Abschnitten verwendete SQLAlchemy-Konstrukte werden aus dem sqlalchemy Namespace importiert. Als zusätzlicher Indikator für die Klassifizierung des Themas werden sie auch einen dunkelblauen Rand rechts enthalten. Bei der Verwendung der ORM sind diese Konzepte immer noch vorhanden, aber seltener explizit im Benutzercode. ORM-Benutzer sollten diese Abschnitte lesen, aber nicht erwarten, diese APIs direkt für ORM-zentrierten Code zu verwenden.

SQLAlchemy ORM baut auf Core auf, um optionale Objekt-relationale Mapping-Funktionen bereitzustellen. Die ORM bietet eine zusätzliche Konfigurationsschicht, die es ermöglicht, benutzerdefinierte Python-Klassen auf Datenbanktabellen und andere Konstrukte zu mappen, sowie einen Objektpersistenzmechanismus, der als Session bekannt ist. Anschließend erweitert sie die Core-Level SQL Expression Language, um SQL-Abfragen in Bezug auf benutzerdefinierte Objekte zu komponieren und aufzurufen.

Abschnitte, die hauptsächlich nur ORM sind, sollten den Titel mit der Phrase „ORM“ enthalten, damit klar ist, dass es sich um ein ORM-bezogenes Thema handelt. SQLAlchemy-Konstrukte, die in diesen Abschnitten verwendet werden, werden aus dem sqlalchemy.orm Namespace importiert. Schließlich enthalten sie als zusätzlichen Indikator für die Klassifizierung des Themas einen hellblauen Rand links. Core-only-Benutzer können diese überspringen.

Die meisten Abschnitte dieses Tutorials behandeln Core-Konzepte, die auch explizit mit der ORM verwendet werden. SQLAlchemy 2.0 weist insbesondere ein viel höheres Maß an Integration der Verwendung der Core-API innerhalb der ORM auf.

Für jeden dieser Abschnitte gibt es einleitenden Text, der diskutiert, inwieweit ORM-Benutzer erwarten können, diese Programmiermuster zu verwenden. SQLAlchemy-Konstrukte in diesen Abschnitten werden aus dem sqlalchemy Namespace importiert, mit einigen möglichen Verwendungen von sqlalchemy.orm Konstrukten gleichzeitig. Als zusätzlicher Indikator für die Klassifizierung des Themas enthalten diese Abschnitte auch sowohl einen dünneren hellen Rand links als auch einen dickeren dunklen Rand rechts. Core- und ORM-Benutzer sollten sich mit den Konzepten in diesen Abschnitten gleichermaßen vertraut machen.

Tutorial-Übersicht

Das Tutorial wird beide Konzepte in der natürlichen Reihenfolge präsentieren, in der sie gelernt werden sollten, zuerst mit einem hauptsächlich Core-zentrierten Ansatz und dann übergehend zu ORM-zentrierteren Konzepten.

Die Hauptabschnitte dieses Tutorials sind wie folgt

  • Herstellung der Konnektivität - die Engine - Alle SQLAlchemy-Anwendungen beginnen mit einem Engine-Objekt; hier erfahren Sie, wie Sie eines erstellen.

  • Arbeiten mit Transaktionen und dem DBAPI - Die Usage API der Engine und ihrer zugehörigen Objekte Connection und Result werden hier vorgestellt. Dieser Inhalt ist Core-zentriert, jedoch werden ORM-Benutzer mit mindestens dem Result-Objekt vertraut sein wollen.

  • Arbeiten mit Datenbankmetadaten - SQL-Abstraktionen von SQLAlchemy sowie die ORM basieren auf einem System zur Definition von Datenbank-Schema-Konstrukten als Python-Objekte. Dieser Abschnitt führt ein, wie dies sowohl aus Core- als auch aus ORM-Perspektive geschieht.

  • Arbeiten mit Daten - hier lernen wir, wie Daten in der Datenbank erstellt, ausgewählt, aktualisiert und gelöscht werden. Die sogenannten CRUD-Operationen werden hier in Bezug auf SQLAlchemy Core mit Links zu ihren ORM-Pendants gegeben. Die SELECT-Operation, die detailliert in Verwendung von SELECT-Anweisungen eingeführt wird, gilt gleichermaßen für Core und ORM.

  • Datenmanipulation mit der ORM behandelt das Persistenzframework der ORM; im Grunde die ORM-zentrierten Wege zum Einfügen, Aktualisieren und Löschen sowie zum Umgang mit Transaktionen.

  • Arbeiten mit ORM-bezogenen Objekten führt das Konzept des relationship()-Konstrukts ein und bietet einen kurzen Überblick über dessen Verwendung mit Links zu tiefergehender Dokumentation.

  • Weiterführende Lektüre listet eine Reihe von wichtigen Dokumentationsabschnitten auf Top-Level auf, die die in diesem Tutorial eingeführten Konzepte vollständig dokumentieren.

Versionsprüfung

Dieses Tutorial ist mit einem System namens doctest geschrieben. Alle Code-Auszüge, die mit einem >>> geschrieben sind, werden tatsächlich als Teil der Testsuite von SQLAlchemy ausgeführt, und der Leser wird eingeladen, die gegebenen Codebeispiele in Echtzeit mit seinem eigenen Python-Interpreter auszuprobieren.

Wenn Sie die Beispiele ausführen, wird empfohlen, dass der Leser eine schnelle Überprüfung durchführt, um sicherzustellen, dass wir uns auf Version 2.0 von SQLAlchemy befinden

>>> import sqlalchemy
>>> sqlalchemy.__version__  
2.0.0