Heim  >  Artikel  >  System-Tutorial  >  Welches Python-ORM ist zwischen Django und SQLAlchemy besser?

Welches Python-ORM ist zwischen Django und SQLAlchemy besser?

WBOY
WBOYnach vorne
2024-01-13 20:03:04475Durchsuche
Was ist ORM?

Bevor wir die Unterschiede zwischen den ORM-Frameworks von Python (Django und SQLAlchemy) vorstellen, müssen wir zunächst sicherstellen, dass wir den Zweck des ORM-Frameworks vollständig verstehen.

ORM steht für Object Relational Mapping. Schauen wir uns nacheinander diese drei Wörter an, die genau erklären, wie nützlich ORM in einer realen Umgebung ist:

Objekte – Dieser Teil stellt Objekte dar, die Frameworks und Programmiersprachen wie Python verwenden.

Beziehung – Dieser Teil stellt die verwendete RDBMS-Datenbank (Relational Database Management System) dar. Dazu gehören viele beliebte relationale Datenbanken, und Sie verwenden möglicherweise die folgenden Datenbanken: MSSQL, MySQL, Oracle Database, PostgreSQL, MariaDB, PerconaDB, TokuDB. Was die meisten relationalen Datenbanken gemeinsam haben, ist ihre relationale Struktur (Tabellen, Spalten, Schlüssel, Einschränkungen usw.).

Mapping – Der letzte Teil stellt die Brücke und Verbindung zwischen den Objekten und Datentabellen in den ersten beiden Teilen dar.

Daher lässt sich der Schluss ziehen, dass ORM darauf ausgelegt ist, Programmiersprachen und Datenbanken zu verbinden, um den Prozess der Erstellung von Anwendungen zu vereinfachen, die auf Daten basieren.

Vergleich zwischen Django und SQLAlchemy Aktivitätsaufzeichnung vs. Datenzuordnung

Django ORM wird mithilfe aktiver Datensätze implementiert – diese Implementierung ist in den meisten ORMs zu sehen. Grundsätzlich lässt sich sagen, dass jede Zeile in der Datenbank direkt einem Objekt im Code zugeordnet ist und umgekehrt. ORM-Frameworks (wie Django) müssen das Schema nicht vordefinieren, um Eigenschaften im Code zu verwenden, sie müssen sie nur verwenden, weil das Framework die Struktur anhand des Datenbankschemas „verstehen“ kann. Darüber hinaus ist es möglich, den Datensatz einfach in der Datenbank zu speichern, da er auch einer bestimmten Zeile in der Tabelle zugeordnet ist.

SQLAlchemy wird mithilfe von Datenzuordnung implementiert. Bei dieser Implementierung besteht eine Lücke zwischen der Datenbankstruktur und der Objektstruktur (sie sind nicht 1:1 wie die Active Record-Implementierung). In den meisten Fällen muss eine zusätzliche Persistenzschicht verwendet werden, um die Interaktion mit der Datenbank aufrechtzuerhalten (z. B. das Speichern von Objekten). Sie können die Methode save() also nicht einfach aufrufen, wenn sie mit aktiven Datensätzen implementiert wird (Opposition), aber andererseits muss der Code nicht über die Funktionsweise der gesamten relationalen Struktur in der Datenbank Bescheid wissen, da diese nicht vorhanden ist direkte Beziehung zwischen dem Code und der Datenbank.

Wer von ihnen gewinnt also? Nichts. Es hängt davon ab, was Sie erreichen möchten. Ich bin der Meinung, dass Sie sich für die Active Record-Implementierung (Django) entscheiden sollten, wenn Ihre Anwendung hauptsächlich ein CRUD-Programm (Erstellen, Lesen, Aktualisieren, Löschen) ist, ohne schwierige und komplexe Regeln zwischen verschiedenen Datenentitäten zu verwenden. Es hilft Ihnen dabei, einfach und schnell und problemlos ein MVP für Ihr Produkt einzurichten. Wenn es viele „Geschäftsregeln“ und Einschränkungen gibt, ist es besser, ein Datenzuordnungsmodell zu verwenden, da es keine strikte Einhaltung der Überlegungen zur Aktivitätsaufzeichnung erfordert und diese nicht erzwingt.

Verwenden Sie komplexe Abfragen

In einigen Fällen können Django und SQLAlchemy gleichzeitig verwendet werden. Der Hauptanwendungsfall, den ich im wirklichen Leben oft gesehen habe, ist Django für alle regulären CRUD-Operationen und SQLAlchemy für komplexere Abfragen, normalerweise schreibgeschützte Abfragen.

Weitere Informationen und Beispiele hierzu finden Sie im BetterWorks Engineering Blog (wir haben keine Verbindung, aber der Blog gefällt uns trotzdem).

Primärschlüssel automatisch generiert

Ein weiterer Unterschied zwischen den beiden Frameworks besteht darin, dass Django automatisch Primärschlüssel für Tabellen erstellen kann, SQLAlchemy jedoch nicht. Primärschlüssel müssen für jede Tabelle manuell erstellt werden. Abwägen der Vor- und Nachteile: Welches Framework passt Ihrer Meinung nach am besten zum Primärschlüssel einer Tabelle? Ermessensentscheidungen werden auf der Grundlage des Wissens und der Erfahrung des Teams getroffen.

Automatische Übermittlung

Standardmäßig übermittelt Django automatisch, SQLAlchemy jedoch nicht. Autocommit beeinflusst die Art und Weise, wie Sie das Framework verwenden (Transaktionen, Rollbacks usw.).

Unterstützte Datenbanken

Django und SQLAlchemy funktionieren beide mit MySQL, PostgreSQL, Oracle und SQLite. Wenn Sie MSSQL verwenden, sollten Sie SQLAlchemy verwenden, da es MSSQL vollständig unterstützt und Sie dort auch weitere verwandte Informationen und Dokumentation finden.

Lernkurve

Im Internet herrscht die allgemeine Meinung, dass Django leichter zu erlernen ist. Dies ist offensichtlich, da es in der Regel für Anwendungsfälle verwendet wird, die nicht besonders komplex sind. Daher sollten Sie überlegen, wie viel Aufwand Sie bereit sind, in das Erlernen des Frameworks und das Cross-Learning mit SQLAlchemy zu investieren, um mehr Flexibilität zu erlangen (vorausgesetzt, Sie benötigen es wirklich).

Gemeinschaftsgröße

Ohne Zweifel verfügt SQLAlchemy über die größte Community unter den Python-ORM-Frameworks. Wenn Ihnen die Community wichtig ist (und ich denke, das sollte sie auch sein), sollte SQLAlchemy Ihre Wahl sein. Das bedeutet nicht, dass Sie keine Hilfe für andere Frameworks wie Django finden. Sie können von StackOverflow auch Fehlerbehebungen, Antworten auf Fragen und andere benötigte Hilfe erhalten, aber die Chancen sind nur höher als bei SQLAlchemy.

Leistung

Ich halte es für unverantwortlich, hier einfach zu schreiben (X ist schneller als Y). Da ORMs über so viele Funktionen und Fähigkeiten verfügen und sich in jedem Framework unterscheiden, wäre es schwierig, Schlussfolgerungen zu ziehen. Meiner Erfahrung nach kann die Art und Weise, wie Sie Framework-Funktionen nutzen, einen großen Einfluss auf die Gesamtleistung der Datenschicht in Ihrer Anwendung haben. Daher empfehle ich, ein Framework nicht auf der Grundlage der Leistung auszuwählen, sondern zu lernen, wie man das Framework rational nutzt.

Wenn Sie rohe SQL-Abfragen in einem ORM-Framework verwenden, Jooq verwenden oder nur einen Teil der Abfrage ohne ORM verwenden, können Sie sich über den EverSQL-Abfrageoptimierer informieren, der wahrscheinlich der einfachste Weg ist, jede Abfrage zu optimieren.

Zusammenfassung

Bei jedem Vergleich halte ich es für das Beste, die Entscheidungsbefugnis wieder dem Leser zu überlassen. Jeder Anwendungsfall ist anders und unterschiedliche Technologien können besser geeignet sein. Schauen Sie sich die oben genannten Unterschiede an und teilen Sie uns Ihre Entscheidung mit.

Das obige ist der detaillierte Inhalt vonWelches Python-ORM ist zwischen Django und SQLAlchemy besser?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen