Frage

Ich schaue mir derzeit das Python-Framework Django für zukünftige Datenbank-basierte Web-Apps sowie eine Portierung einiger Apps an, die derzeit in PHP geschrieben sind.Eines der schlimmsten Probleme in meinen letzten Jahren bestand darin, Änderungen am Datenbankschema im Auge zu behalten und diese Änderungen auf produktiven Systemen bereitzustellen.Ich habe nicht gewagt, darum zu bitten, sie auch rückgängig machen zu können, aber zum Testen und Debuggen wäre das natürlich eine großartige Funktion.Aus anderen Fragen hier (wie z Dieses hier oder Dieses hier), kann ich sehen, dass ich nicht allein bin und dass dies kein triviales Problem ist.Außerdem habe ich in den Antworten dort viele Inspirationen gefunden.

Da Django sehr leistungsfähig zu sein scheint, verfügt es über irgendwelche Tools, die bei den oben genannten Problemen helfen?Vielleicht steht es sogar in ihren Dokumenten und ich habe es übersehen?

War es hilfreich?

Lösung

Es gibt mindestens zwei Dienstprogramme von Drittanbietern, die DB-Schema-Migrationen durchführen: Süd Und Django-Entwicklung.Ich habe beides noch nicht ausprobiert, aber ich habe einige gute Dinge über South gehört, obwohl es Evolution schon etwas länger gibt.

Schauen Sie sich auch an SchemaEvolution im Django-Wiki.Es handelt sich lediglich um eine Wiki-Seite über die Migration der Datenbank.

Andere Tipps

Als ich das letzte Mal nachgesehen habe (Version 0.97), kann syncdb Tabellen hinzufügen, um Ihr DB-Schema mit Ihrer models.py-Datei zu synchronisieren, aber es kann nicht:

  • Benennen Sie eine Spalte in einer gefüllten Datenbank um oder fügen Sie sie hinzu.Das müssen Sie per Hand machen.
  • Refaktorisieren Sie Ihr Modell (z. B. teilen Sie eine Tabelle in zwei) und füllen Sie Ihre Datenbank entsprechend neu.

Es könnte jedoch möglich sein, ein Django-Skript zu schreiben, um die Migration durchzuführen, indem man mit den beiden Unterschieden spielt Manager, aber das kann ewig dauern, wenn Ihre Datenbank groß ist.

Auf der letzten DjangoCon gab es eine Podiumsdiskussion zu DB-Schemaänderungen.da ist ein Video der Sitzung (Danke an Google), das einige nützliche Informationen zu einer Reihe dieser Dienstprogramme liefern sollte.

Und jetzt gibt es auch noch Migrationen.Aus Bekanntmachung:

django-evolution versucht, dieses Problem auf clevere Weise anzugehen, indem es Änderungen an Modellen erkennt, die sich noch nicht im Datenbankschema widerspiegeln, und herausfindet, was getan werden muss, um die beiden wieder synchron zu machen. Im Gegensatz dazu verfolgt dmigrations den dummen Ansatz:Sie müssen die Änderungen in einer Migrationssequenz explizit angeben, die wiederum angewendet werden, um eine Datenbank auf den neuesten Stand zu bringen, der die zugrunde liegenden Modelle widerspiegelt.

Das bedeutet zusätzlichen Aufwand für Entwickler, die Migrationen erstellen, macht aber auch den gesamten Prozess völlig transparent – ​​für unsere Projekte haben wir uns für das einfachste System entschieden, das überhaupt funktionieren könnte.

(Mein Mut)

Ich habe viel Gutes darüber gehört Django-Schema-Entwicklungszweig und das waren Meinungen tatsächlicher Benutzer.Es funktioniert größtenteils sofort und tut, was es tun soll.

Du solltest nachschauen Auswanderungen, es funktioniert ein wenig anders als Django-Evolutions.Es zeigt Ihnen alles, was es tut, und fragt Sie bei komplizierten Dingen nach Ihren Interventionen.Es sollte großartig sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top