2010-11-01 3 views
10

J'utilise SQLObject depuis longtemps, mais a remarqué que SQLAlchemy est devenu beaucoup plus populaire dans les deux dernières années: http://www.google.com/trends?q=sqlobject,+sqlalchemyDevrais-je utiliser SQLObject, SQLAlchemy ou SQLAlchemy + Elixir?

Y at-il des raisons impérieuses de passer à SQLAlchemy? Comment sont ses performances par rapport à SQLObject? Sa convivialité? Et quels sont les frais supplémentaires liés à l'utilisation d'Elixir? Mes besoins sont basiques, simples. CRUD. Rien d'exotique.

J'ai vu this related question, mais il a été demandé il y a 1 an et il n'y avait pas beaucoup de réponse.

Répondre

10

J'ai beaucoup utilisé SqlObject dans le cadre de TurboGears 0.9, mais je suis passé à SqlAlchemy + elixir en remplacement de SqlObject avant TurboGears.

Notez que même sans élixir, sqlalchemy a ses propres définitions de classe de style déclaratif: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

Si vous n'êtes pas sûr de la performance, il ne faut pas trop de travail à tomber dans élixir en remplacement dans votre application et faire un profilage rapide. Je suppose que les différences de performance entre SqlObject/SQL/SQLA + elixir pâlissent en comparaison avec le temps passé à écrire et à lire des données vers/depuis la base de données.

Notez que sqlalchemy offre beaucoup plus de contrôle sur avides/chargement paresseux de relationships et columns, ce qui aide l'empreinte mémoire & performances de votre application dans beaucoup de cas.

Probablement la raison la plus convaincante pour basculer est que SqlAlchemy est qu'il est activement développé (bien que je ne sache pas trop sur le statut de développement de SqlObject). Pour une raison secondaire, vous pouvez être assuré que si vos besoins deviennent plus complexes, il est fort probable que quelqu'un d'autre ait déjà tenté de frapper la cheville carrée des objets Python dans le trou rond de SQL avec succès avec SqlAlchemy.