2016-05-26 5 views
1

Wie funktionieren die Isolationsabhängigkeiten zwischen mongdb und django?Wie funktioniert die Abhängigkeitenisolierung zwischen MongoDB und Django?

Ich habe mehrere Projekte mit JAVA/SPRING gemacht, und die letzten Tage, Ich studiere Python django.

I successed Verbindung zwischen django und SQLite, und vor wenigen Tagen , zu erhalten, wenn ich MongoDB zu verbinden versuchte, es ist schwer, Abhängigkeiten Datenbank und django wegen django-admin zu trennen.

Django-admin müssen bestimmte Felder für jedes Modell erreichen, jedoch hat jede Datenbank ihre eigenen Feldeigenschaften. Wenn das Projekt die Datenbankstruktur ändern sollte, sollten wir daher viel Code in model.py ändern.

beispiels

Was passiert, wenn SQLite MongoDB? Nur mit anderen Treibern kann der Server nicht funktionieren. B. models.TextField (sqlite) -> models.StringField (mongodb). Es ist unvermeidlich, oder? Es scheint schwierig, dass Abhängigkeiten vollständig zwischen Datenbank und Django

Solating ist es okay? vermisse ich etwas?

Antwort

0

Was ist, wenn sqlite zu Mongodb? Nur mit anderen Treibern kann der Server nicht funktionieren. B. models.TextField (sqlite) -> models.StringField (mongodb). Es ist unvermeidlich, oder? Es ist schwierig scheint, dass Abhängigkeiten vollständig zwischen Datenbank und django

TextField und StringField solating ist nicht, wo Sie Probleme haben, da sie in fast allen Datenbanken unterstützt, aber betrachten Sie diese Bibliothek django-mongodb-engine, wieder verwendet es die grundlegenden Felder, die bereits existieren in Django ORM soweit möglich, z

class Post(models.Model): 
    title = models.CharField() <-- both Django ORM and mongodb-engine have this 
    text = models.TextField() <-- both Django ORM and mongodb-engine have this 

Dieses Modell wie sowohl in SQL und MongoDB Motoren arbeiten, aber wenn Sie einen MongoDB-only verwenden (wie in Standard-Django ORM Motor nicht) Funktion wie ListField()

class Post(models.Model): 
    title = models.CharField() 
    text = models.TextField() 
    tags = ListField() # <-- not supported everywhere 

Sie dann Die Migration zu einer SQL-Engine erfordert einige manuelle Arbeit, um dieses Feld zuzuordnen.

Wenn daher Projektdatenbankstruktur ändern sollte, sollten wir eine Menge Code in models.py ändern. Ist es okay?

Normalerweise ja, um die Datenbankstruktur zu ändern, nehmen Sie Änderungen in models.py. Danach würden Sie eine migration ausführen, was ein Schritt ist, der Skripte erzeugt, um die Datenbank zu ändern (z. B. das Hinzufügen einer neuen SQL-Tabellenspalte). Für MongoDB gibt es keine explizite Migration, da das Schema flexibel ist (oder schemaless wenn Sie bevorzugen).

Wie für den Admin ist es ziemlich schlau, wenn es um Django-Modelle geht, müssen Sie möglicherweise die Modelle und Felder definieren, die im Admin angezeigt werden sollen, aber in der Detailansicht müssen Sie sich nicht um jeden kümmern Einfeld, wie Django Admin sie versteht basierend auf den Informationen in models.py

und Datenbanktreiber zu ändern, ist es der DATABASES Wert in settings.py

+0

Vielen Dank für diese reiche hilfreiche Anleitung und Informationen wieder. Ich sollte härter mit deinen Links lernen. –

Verwandte Themen