12

私は長い間 SQLObject を使用してきましたが、ここ数年で SQLAlchemy の人気が高まっていることに気付きました: http://www.google.com/trends?q=sqlobject,+sqlalchemy

SQLAlchemy に切り替える説得力のある理由はありますか? そのパフォーマンスは SQLObject と比べてどうですか? その使い勝手は?また、Elixir を使用することによる追加のパフォーマンス オーバーヘッドは何ですか?

私のニーズは、基本的で単純な CRUD です。エキゾチックなものは何もありません。

この関連する質問を見たことがありますが、1 年以上前に質問されたもので、あまり回答がありませんでした。

4

1 に答える 1

11

私は TurboGears 0.9 の一部として SqlObject を広範囲に使用しましたが、TurboGears よりも前に、SqlObject の代わりとして SqlAlchemy + elixir に切り替えました。

エリクシルがなくても、SqlAlchemy には独自の宣言型スタイル クラス定義があることに注意してください: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

パフォーマンスについて確信が持てない場合は、アプリの代替として elixir をドロップして、簡単なプロファイリングを行うのはそれほど面倒なことではありません。SqlObject/SQL/SQLA+elixir のパフォーマンスの違いは、データベースへのデータの書き込みと読み取りに費やされる時間と比較すると見劣りすると思います。

SqlAlchemy では、リレーションシップの熱心な/遅延読み込みをより細かく制御できることに注意してください。これにより、多くの場合、アプリのメモリ フットプリントとパフォーマンスが向上します。

おそらく、切り替える最も説得力のある理由は、SqlAlchemy が活発に開発されていることです (ただし、SqlObject の開発状況についてはあまり知りません)。2 つ目の理由として、ニーズがより複雑になった場合、SqlAlchemy を使用して、Python オブジェクトの四角いペグを SQL の丸い穴に打ち込もうとしている人がすでにいる可能性が非常に高いと確信できます。

于 2010-11-03T11:53:48.803 に答える