Migration

Django, Flask, Bottle, WSGI, CGI…
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Warum ist die DB-Migration von Django so viel besser als die von Flask? Gibt es Anstrengungen das einmal zu verbessern?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Flask unterstützt keine Datenbanken für die es ein System für Migrationen anbieten könnte. Dementsprechend kann Migration bei Flask auch nicht schlechter als bei Django sein oder verbessert werden.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Dass die Migrationsscripts von Alembic denen von Django massiv unterlegen sind, hat mir damals sogar die Flask-Community mitgeteilt.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

meego hat geschrieben:Dass die Migrationsscripts von Alembic denen von Django massiv unterlegen sind, hat mir damals sogar die Flask-Community mitgeteilt.
Das hat mit Flask aber immernoch nichts zu tun.
the more they change the more they stay the same
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Flask-Migrate um genau zu sein. Gehört auch zu Flask.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Flask-Migrate ist eine Extension für Flask, das gehört nicht zu Flask an sich.

Ansonsten ist die Ausgangsfrage ja wohl eher eine für die Entwickler der "betroffenen" Pakete. Du hast dein Wahl des Software-Stacks getroffen. Wenn du damit unglücklich bist, gibt's zwei Möglichkeiten:
1. lernen, damit zu leben
2. den Software-Stack wechseln (es ist ja nicht so, dass die Django früher nicht mehrfach empfohlen worden wäre...).

Gruß, noisefloor
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Die meisten Extensions werden schon von den Hauptdevs gemacht. Gab es hier einmal eine Umfrage wer Flask und wer Django (wo dann halt die Lernkurve auch sehr viel höher ist) verwendet?
BlackJack

@meego: Was soll so eine Umfrage denn bringen? Was man wofür einsetzt, hängt letztendlich ja auch von dem zu lösenden Problem und der Erfahrung ab, die man mit dem jeweiligen Rahmenwerk bereits hat. Die Lernkurve von Bottle oder Flask unterscheidet sich von der von Django letztlich ja auch nur wenn man ein Projekt hat, das Djangos Umfang nicht benötigt. Wenn man alles, oder das meiste, an Funktionalität benötigt, was Django bietet, dann muss man ja auch bei den Mikrorahmenwerken entsprechende Bibliotheken einbinden die man (kennen)lernen muss.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Also ich empfand den Einstieg in Flask einfacher. Die Syntax war einfach sehr viel näher an Python angelehnt. Was mir hingegen danach Schwierigkeiten bereitete ist die Projekt-Organisation.
BlackJack

@meego: Welche Syntax? Die Syntax wird von Python vorgegeben und ist bei Django und bei Flask gleich. Falls Du die bei Templates meinst, da hast Du bei Flask doch die Wahl. Und sollte die auf Jinja2 fallen, dann ist die der Syntax der Django-Templates doch *sehr* ähnlich.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Naja, Wahl.. ich meine aber nicht die Templates: Es ist einfach alles näher an den bekannten Kontrollstrukturen von Python orientiert und hat weniger Schmuck und Frameworkspezifisches oder auch fremdes Beigemüse wie Regex für einfache Routen.
BlackJack

@meego: Eine eigene Syntax für Routen ist also kein ”fremdes Beigemüse”, und reguläre Ausdrücke, die auch schon in der Standardbibliothek enthalten sind, und in 1000 anderen Sprachen und Programmen, sind Dir zu frameworkspezifisch? Äh…
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Naja, ich hatte damals einfach eher den Eindruck mich mit den Eigenheiten das Frameworks herumzuschlagen. Mit diesen Erfahrungen stehe ich offenbar auch nicht alleine, Regex ist für eine Route einfach nicht notwendig.
BlackJack

@meego: Nein, natürlich stehst Du damit nicht alleine weil Flask diese Eigenheiten mit denen Du Dich hermumschlagen musst nicht hat, weil es die ganze Funktionalität nicht hat. Das heisst Du erfindest das Rad neu, wahrscheinlich weniger rund, oder benutzt zusätzliche Bibliotheken und bastelst das dann alles irgendie zusammen. Mit dem Endergebnis das Du am Ende die gleiche Komplexität hast wie bei Django, oder vielleicht noch etwas mehr weil es nicht aus einem Guss ist, und dass es nicht so gut aufeinander abgestimmt läuft. Irgendwer beschwerte sich ja beispielsweise das die Migration bei Django besser ist. Wer war das denn noch gleich… ;-)

Bottle und Flask verstecken die regulären Ausdrücke hinter einer eigenen Syntax für Routen. Wenn Du Die lieber magst, dann schau Dir das einfach ab wie die aus den Zeichenketten einen regulären Ausdruck basteln und verwende dann eine solche Funktion in Django.

Edit: Vielleicht sollte ich noch hinzufügen das ich kein ”Django-Fanboy” bin. Das meiste was ich an Webanwendungen schreibe basiert auf Bottle.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

BlackJack hat geschrieben:Bottle und Flask verstecken die regulären Ausdrücke hinter einer eigenen Syntax für Routen. Wenn Du Die lieber magst, dann schau Dir das einfach ab wie die aus den Zeichenketten einen regulären Ausdruck basteln und verwende dann eine solche Funktion in Django.
Das lässt sich leider nur sehr eingeschränkt machen. Flask, oder vielmehr Werkzeug, kompiliert nicht nur zu regulären Ausdrücken sondern verpasst Routen noch eine Art Typsystem und sortiert Routen danach wie spezifisch sie sind. Dazu kommen noch Factories und Templates. Außerdem kann man auf Subdomains und Hostnames in nicht trivialen Wegen matchen.

Man hat also nicht nur einen Compiler sondern es gibt auch eine große Runtime Komponente. Die notwendigen Änderungen die man an Django machen müsste um ähnliches zu erreichen sind nicht praktikabel.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Ich wollte keinen Glaubenskrieg entfachen. :D
BlackJack

@DasIch: Die Anfänger die Flask einfach finden, sagen das ja meisten nach dem Hello World-Beispiel und wenn sie Routendekoratoren mit Platzhaltern für Argumente sehen. *Der* ”Zucker” liesse sich schon auf Django's Routing streuen.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Das wäre zu begrüssen.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

also ich hatte meine Webapplikationen früher auf Bottle + SQLAlchemy + WTForms. Jetzt nutze ich Django - außer für einfacher Sachen, wo ich wirklich nur die Route brauche, dann nehme ich nach wie vor Bottle.

Im Einstieg ist Django _scheinbar_ schwerer, weil man sich direkt mit Routing + ORM + Forms + Templates rumschlagen muss. Aber nach der ersten eigenen App muss ich sagen: das ist alles sehr einfach zu durchschauen. Das ORM von Django finde ich persönlicher einfacher als SQLAlchemy, das Forms-Framework von Django finde ich einfacher als WTForms. Aber das IMHO beste an Django ist, dass alles so schön "vezahnt" ist und ineinander greift. Was vieles einfacher macht.

Gruß, noisefloor
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Naja, vielleicht sollte ich Django noch einmal eine Chance geben. Immerhin wäre der Einstieg nun vielleicht einfacher.

Wo ist eigentlich der Unterschied zwischen Bottle und Flask? Die sehen ja ziemlich ähnlich aus, ausser das Bottle überhaupt keine Community hat.
Antworten