我已经使用SQLObject很长一段时间了,但是注意到SQLAlchemy在过去几年变得更受欢迎:http://www.google.com/trends?q=sqlobject,+sqlalchemy
是否有令人信服的理由转而使用SQLAlchemy?它的性能相对于SQLObject如何?它的可用性?使用Elixir会增加什么性能开销?
我的需求是基本的,简单的CRUD。没有异国情调。
我见过this related question,但有人在1年多前被问到并没有太多回应。
答案 0 :(得分:11)
我在广泛使用SqlObject作为TurboGears 0.9的一部分,但是在TurboGears之前,它已经转换为SqlAlchemy + elixir作为SqlObject的替代品。
请注意,即使没有elixir,SqlAlchemy也有自己的声明式样式类定义: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html
如果您不确定性能,那么在应用程序中添加长生不老药作为替代品并进行快速分析不应该太多。我猜想SqlObject / SQL / SQLA + elixir与数据库写入和读取数据所花费的时间相比,性能差异很大。
请注意,SqlAlchemy可以更好地控制relationships和columns的急切/延迟加载,这有助于内存占用和内存占用。在很多情况下你的应用程序的性能。
切换最令人信服的理由可能是SqlAlchemy正在积极开发(尽管我不太了解SqlObject的dev状态)。 作为次要原因,您可以放心,如果您的需求变得更加复杂,很可能有其他人已经尝试使用SqlAlchemy成功地将Python对象的方块绑定到SQL的圆孔中。