我应该使用SQLObject、SQLAlchemy还是SQLAlchemy + Elixir?

11 投票
1 回答
3585 浏览
提问于 2025-04-16 06:22

我一直在使用SQLObject很长时间了,但最近发现SQLAlchemy变得越来越受欢迎了:http://www.google.com/trends?q=sqlobject,+sqlalchemy

有没有什么特别的理由让我换到SQLAlchemy呢?它的性能和SQLObject比起来怎么样?使用起来方便吗?还有,使用Elixir会增加什么样的性能开销呢?

我的需求很简单,就是基本的CRUD操作。没有什么复杂的需求。

我看到过这个相关的问题,但那是超过一年前问的,回复也不多。

1 个回答

11

我在TurboGears 0.9中广泛使用了SqlObject,但在TurboGears之前,我就已经把SqlObject换成了SqlAlchemy加elixir,作为SqlObject的替代品。

需要注意的是,即使没有elixir,SqlAlchemy也有自己的一种声明式类定义风格:http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

如果你对性能有疑虑,换上elixir作为替代品并进行一些快速的性能测试其实不会太麻烦。我猜,SqlObject、SQL和SQLA加elixir之间的性能差异,相比于你花在数据库读写数据上的时间来说,可能微不足道。

另外,SqlAlchemy在处理关系和列的急切加载和懒加载方面提供了更大的控制,这在很多情况下有助于减少内存占用和提高应用性能。你可以了解更多关于关系的内容。

可能最吸引人换用SqlAlchemy的理由是,它正在积极开发中(虽然我对SqlObject的开发状态了解不多)。其次,如果你的需求变得更复杂,你可以放心,可能已经有人成功地将Python对象与SQL结合起来,解决了类似的问题。

撰写回答