2010-11-01 10 views
10

Ich habe für eine lange Zeit mit SQLObject, aber bemerkt, dass SQLAlchemy viel mehr populär in den letzten paar Jahren geworden ist: http://www.google.com/trends?q=sqlobject,+sqlalchemySollte ich SQLObject, SQLAlchemy oder SQLAlchemy + Elixir verwenden?

Gibt es zwingende Gründe SQLAlchemy zu wechseln? Wie ist seine Leistung relativ zu SQLObject? Seine Verwendbarkeit? Und was ist der zusätzliche Leistungsaufwand für die Verwendung von Elixir?

Meine Bedürfnisse sind grundlegende, einfache CRUD. Nichts Exotisches.

Ich habe gesehen this related question, aber es wurde vor 1 Jahr und fragte nicht viel Antwort.

Antwort

10

Ich verwendete SqlObject ausgiebig als Teil von TurboGears 0.9, wechselte aber zu SqlAlchemy + elixir als Ersatz für SqlObject noch vor TurboGears.

Beachten Sie, dass auch ohne Elixier, hat sqlalchemy seine eigene deklarative Stil Klassendefinitionen: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

Wenn Sie sich nicht sicher über die Leistung sind, sollte es nicht zu viel Arbeit sein Elixier als Ersatz in Ihrer App fallen und mache ein schnelles Profiling. Ich würde vermuten, dass die Leistungsunterschiede zwischen SqlObject/SQL/SQLA + Elixier im Vergleich zu dem Zeitaufwand beim Schreiben und Lesen von Daten in/aus der Datenbank blass sind.

Bitte beachte, dass sqlalchemy bietet viel mehr Kontrolle über eifrig/verzögertes Laden von relationships und columns, die den Speicherbedarf & Leistung Ihrer App in vielen Fällen hilft.

Der wahrscheinlich beste Grund für einen Wechsel ist, dass SqlAlchemy aktiv entwickelt wird (obwohl ich nicht mehr viel über den Dev-Status von SqlObject weiß). Als sekundärer Grund können Sie sicher sein, dass es, wenn Ihre Anforderungen komplexer werden, sehr wahrscheinlich ist, dass jemand anderes bereits versucht hat, mit SqlAlchemy den quadratischen Rahmen von Python-Objekten in das runde Loch von SQL zu bugsieren.