【问题标题】:django orm versus sqlachemy, are they basically the same thing?django orm vs sqlalchemy,它们基本上是一样的吗?
【发布时间】:2011-04-11 16:32:49
【问题描述】:

在使用 django 时,我相信您可以将内置 orm 换成 sqlalchemy(但不确定如何?)。

它们基本上是一样的还是两者之间有明显的赢家?

【问题讨论】:

  • 据我所知,您不能将 contrib 应用程序与 SqlAlchemy 一起使用,尽管您可能可以使用某种反射来解决这个问题。要在 Django 中使用 SqlAlchemy,只需在视图中使用它,就像使用任何其他 Python 模块一样。

标签: python django sqlalchemy


【解决方案1】:

在使用 django 时,我相信您可以将内置 orm 换成 sqlalchemy(但不确定如何?)。

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

我读过关于using both 的人。 Django 的 ORM 可以让电池正常工作,而 SQLAlchemy 可以处理复杂的 SQL 关系和查询。

它们基本上是一样的还是两者之间有明显的赢家?

它们不是一回事。 SQLAlchemy 比 Django 的 ORM 更通用。例如,虽然 Django 的 ORM 将业务逻辑层和持久层紧密耦合到模型中,但 SQLAlchemy 会让您将它们分开。

另一方面,SQLAlchemy 的学习曲线更陡峭,对于许多项目来说可能是多余的。现有的 SQLAlchemy 迁移工具可能不容易与 Django 集成。

总而言之,我不会假设宣布任何一个“赢家”。它们是大体相似的工具,但各有优缺点和最适合的情况。

当您讨论这个主题时,阅读这篇(过时但相关的)blog post 关于 Django ORM 的缺点以及它与 SQLAlchemy 的比较不会有什么坏处。

【讨论】:

    【解决方案2】:

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

    Elixir 在 SQLAlchemy 之上提供了一个接口,它在复杂性方面更接近 Django ORM,但如果单独使用 Elixir 还不够,您还可以使用 SQLAlchemy 的构造。例如,我发现 SQLAlchemy 的 AssociationProxy 类在多个场合很有用。您只需将 AssociationProxy 字段放入 Elixir 模型类即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 2016-04-23
      • 1970-01-01
      • 2018-05-10
      • 2011-11-29
      • 2011-12-26
      • 2011-03-15
      相关资源
      最近更新 更多