django orm vs sqlalchemy,他们基本上是一回事吗?

时间:2010-09-13 13:46:58

标签: python django sqlalchemy

当使用django时,我相信你可以换掉sqlalchemy的内置orm(不知道怎么样?)。

他们两者基本上是一回事还是两者之间有明显的赢家?

2 个答案:

答案 0 :(得分:6)

  

当使用django时,我相信你可以换掉sqlalchemy的内置orm(不知道怎么样?)。

您可以在Django应用程序中使用SQLAlchemy。这并不意味着你可以“交换”ORM。如果你用SQLAlchemy完全取代Django的ORM,一些Django的内置电池将停止工作。例如,Admin应用程序不起作用。

我已阅读有关人using 两者的内容。 Django的ORM可以让电池工作,SQLAlchemy可以处理复杂的SQL关系和查询。

  

他们两者基本上是一回事还是两者之间有明显的赢家?

他们不是一回事。 SQLAlchemy比Django的ORM更像多才多艺。例如,当Django的ORM将业务逻辑层和持久层紧密地耦合到模型中时,SQLAlchemy将允许您将它们分开。

另一方面,SQLAlchemy的学习曲线更陡峭,对许多项目来说都是一种过度杀伤力。 SQLAlchemy的现有迁移工具可能无法轻松与Django集成。

所有人都说,我不认为宣布要么是“胜利者”。它们是大致相似的工具,但具有自己的优势,弱点和最适合的情况。

当你谈到这个问题时,关于Django ORM的缺点以及它与SQLAlchemy的比较,阅读这个(过时但相关的)blog post并不会有什么坏处。

答案 1 :(得分:0)

SQLAlchemy比Django ORM更强大,但也更复杂。

Elixir在SQLAlchemy之上提供了一个接口,它在复杂性方面更接近Django ORM,但如果Elixir不够,还允许您使用SQLAlchemy中的构造。例如,我发现SQLAlchemy的AssociationProxy类在几种情况下都很有用。您只需将AssociationProxy字段放入Elixir模型类中,就可以了。