SQLAlchemy
Das Python SQL Toolkit und der Object Relational Mapper
Einführung
SQLAlchemy ist das Python-SQL-Toolkit und der Object Relational Mapper, der Anwendungsentwicklern die volle Leistungsfähigkeit und Flexibilität von SQL bietet. SQLAlchemy bietet eine vollständige Suite bekannter Persistenzmuster auf Unternehmensebene, die für einen effizienten und leistungsstarken Datenbankzugriff entwickelt und in eine einfache und pythonische Domänensprache angepasst wurden.
Zu den wichtigsten Funktionen von SQLAlchemy gehören:
- Ein ORM mit industrieller Stärke, das im Kern auf der Identitätskarte, der Arbeitseinheit und den Datenzuordnungsmustern basiert. Diese Muster ermöglichen eine transparente Persistenz von Objekten mithilfe eines deklarativen Konfigurationssystems. Domänenmodelle können auf natürliche Weise erstellt und manipuliert werden, und Änderungen werden automatisch mit der aktuellen Transaktion synchronisiert.
- Ein relational orientiertes Abfragesystem, das die gesamte Bandbreite der SQL-Funktionen explizit offenlegt, einschließlich Verknüpfungen, Unterabfragen, Korrelation und fast alles andere im Hinblick auf das Objektmodell. Beim Schreiben von Abfragen mit dem ORM werden dieselben Techniken der relationalen Komposition verwendet, die Sie beim Schreiben von SQL verwenden. Sie können zwar jederzeit in literales SQL einsteigen, dies ist jedoch praktisch nie erforderlich.
- Ein umfassendes und flexibles System zum Eager Loading für verwandte Sammlungen und Objekte. Sammlungen werden innerhalb einer Sitzung zwischengespeichert und können bei individuellem Zugriff, alle auf einmal mithilfe von Joins oder durch Abfrage pro Sammlung über den gesamten Ergebnissatz geladen werden.
- Ein Core SQL-Konstruktionssystem und eine DBAPI-Interaktionsschicht. Der SQLAlchemy Core ist vom ORM getrennt und stellt eine eigenständige Datenbankabstraktionsschicht dar und umfasst eine erweiterbare Python-basierte SQL-Ausdruckssprache, Schemametadaten, Verbindungspooling, Typumwandlung und benutzerdefinierte Typen.
- Es wird davon ausgegangen, dass alle Primär- und Fremdschlüsseleinschränkungen zusammengesetzt und natürlich sind. Ganzzahlige Ersatzprimärschlüssel sind natürlich immer noch die Norm, aber SQLAlchemy geht von diesem Modell niemals aus und codiert es auch nicht fest.
- Datenbank-Introspektion und -Generierung. Datenbankschemata können in einem Schritt in Python-Strukturen „gespiegelt“ werden, die Datenbankmetadaten darstellen; Dieselben Strukturen können dann direkt wieder CREATE-Anweisungen generieren – alles innerhalb des Kerns, unabhängig vom ORM.
Die Philosophie von SQLAlchemy:
- SQL-Datenbanken verhalten sich immer weniger wie Objektsammlungen, je mehr Größe und Leistung eine Rolle spielen; Objektsammlungen verhalten sich immer weniger wie Tabellen und Zeilen, je wichtiger die Abstraktion wird. SQLAlchemy zielt darauf ab, diese beiden Prinzipien zu berücksichtigen.
- Ein ORM muss das „R“ nicht verbergen. Eine relationale Datenbank bietet umfassende, satzbasierte Funktionalität, die vollständig verfügbar gemacht werden sollte. Das ORM von SQLAlchemy bietet einen unbegrenzten Satz von Mustern, die es einem Entwickler ermöglichen, eine benutzerdefinierte Vermittlungsschicht zwischen einem Domänenmodell und einem relationalen Schema zu erstellen, wodurch das sogenannte Problem der „objektrelationalen Impedanz“ in eine ferne Erinnerung verblasst.
- Der Entwickler trifft in jedem Fall alle Entscheidungen hinsichtlich des Designs, der Struktur und der Namenskonventionen sowohl des Objektmodells als auch des relationalen Schemas. SQLAlchemy bietet lediglich die Möglichkeit, die Ausführung dieser Entscheidungen zu automatisieren.
- Mit SQLAlchemy gibt es kein „Der ORM hat eine fehlerhafte Abfrage generiert“ – Sie behalten die volle Kontrolle über die Struktur von Abfragen, einschließlich der Organisation von Verknüpfungen, der Verwendung von Unterabfragen und der Korrelation sowie der angeforderten Spalten. Alles, was SQLAlchemy tut, ist letztendlich das Ergebnis einer vom Entwickler initiierten Entscheidung.
- Verwenden Sie keinen ORM, wenn das Problem keinen erfordert. SQLAlchemy besteht aus einem Kern und einer separaten ORM-Komponente. Der Core bietet eine vollständige SQL-Ausdruckssprache, die die pythonische Konstruktion von SQL-Konstrukten ermöglicht, die direkt in SQL-Strings für eine Zieldatenbank gerendert werden und Ergebnismengen zurückgeben, bei denen es sich im Wesentlichen um erweiterte DBAPI-Cursor handelt.
- Transaktionen sollten die Norm sein. Mit dem ORM von SQLAlchemy geht nichts in den permanenten Speicher, bis commit() aufgerufen wird. SQLAlchemy ermutigt Anwendungen, eine konsistente Möglichkeit zu schaffen, den Anfang und das Ende einer Reihe von Vorgängen abzugrenzen.
- Geben Sie niemals einen Literalwert in einer SQL-Anweisung wieder. Gebundene Parameter werden so weit wie möglich verwendet, sodass Abfrageoptimierer Abfragepläne effektiv zwischenspeichern können und SQL-Injection-Angriffe kein Problem darstellen.
Dokumentation
Aktuelle Dokumentation finden Sie unter:
https://www.sqlalchemy.org/docs/
Installation / Anforderungen
Die vollständige Dokumentation zur Installation finden Sie unter Installation.
Hilfe erhalten / Entwicklung / Fehlerberichterstattung
Weitere Informationen finden Sie im SQLAlchemy Community Guide.
Verhaltenskodex
SQLAlchemy legt vor allem großen Wert auf eine höfliche, rücksichtsvolle und konstruktive Kommunikation zwischen Benutzern und Entwicklern. Unseren aktuellen Verhaltenskodex finden Sie unter Verhaltenskodex.
Lizenz
SQLAlchemy wird unter der MIT-Lizenz vertrieben.