2010-11-01 15 views
10

Sto usando SQLObject per molto tempo, ma ha notato che SQLAlchemy è diventato molto più popolare negli ultimi due anni: http://www.google.com/trends?q=sqlobject,+sqlalchemyDevo utilizzare SQLObject, SQLAlchemy o SQLAlchemy + Elixir?

Vi sono validi motivi per passare a SQLAlchemy? In che modo le sue prestazioni sono relative a SQLObject? La sua usabilità? E qual è l'overhead delle prestazioni aggiunto per l'utilizzo di Elixir?

Le mie esigenze sono semplici, semplici CRUD. Niente di esotico.

Ho visto this related question, ma è stato chiesto più di 1 anno fa e non ho avuto molte risposte.

risposta

10

Ho usato SqlObject estesamente come parte di TurboGears 0.9, ma sono passato a SqlAlchemy + elixir come una sostituzione in sostituzione di SqlObject prima ancora di TurboGears.

Nota che, anche senza elisir, SQLAlchemy ha le sue definizioni di classe stile dichiarativo: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

Se siete incerti circa le prestazioni, non dovrebbe essere troppo lavoro per cadere in elisir come un sostituto nella vostra applicazione e fare una rapida profilazione. Direi che le differenze di prestazioni tra SqlObject/SQL/SQLA + elixir sono ridotte rispetto al tempo impiegato per scrivere e leggere i dati da/verso il database.

Nota che SQLAlchemy permette un controllo molto maggiore eager loading/pigra di relationships e columns, che aiuta l'occupazione di memoria & prestazioni della vostra applicazione in molti casi.

Probabilmente il motivo più convincente per cambiare è che SqlAlchemy è che è stato sviluppato attivamente (anche se non so più nulla sullo stato di sviluppo di SqlObject). Come motivo secondario, puoi essere certo che se le tue esigenze diventano più complesse, è molto probabile che ci sia qualcun altro che ha già tentato di battere con successo il piolo quadrato degli oggetti Python nel buco rotondo di SQL con successo con SqlAlchemy.