如何从Django ORM开始轻松切换到SQLAlchemy?

时间:2013-08-27 12:17:55

标签: python django sqlalchemy django-orm

像Pinterest和其他人一样,我想在Django中制作出色的应用程序。 他们中的许多人都在谈论Django ORM的局限性--Pinterest在Django ORM中只使用了一个表。我认为它可以是User table或django_session。因为他们是从Django ORM开始的。

所以,如果我要开发和推广我的网站很长一段时间,我应该选择什么解决方案?我将继续使用django,而不是切换到flask或nodeJS。

一些django专家正在修改Djagno ORM,会话等,例如 https://github.com/devhub/baph

但这对我来说有点风险,我不能使用许多Django功能,如会话,重置密码。但是,一些优秀的应用程序也适用于SqlAlchemy,如:django-tastypie。

但当然数据库是最重要的,它必须容易演变为永远快速。

那么我应该使用什么解决方案? 将Django ORM用于User和django会话表是没有问题的吗? 其余的我将使用sqlAlchemy。所以我可以使用django-registration,sessions等。

你能看到这个解决方案有什么问题吗?

1 个答案:

答案 0 :(得分:5)

有一种一般规则,只要你用Django方式,Django就可以正常工作。在这种情况下,这意味着如果你想在Django中使用SQLAlchemy,你很可能遇到一些意想不到的问题并付出很多努力。

Django的ORM很好。它不如SQLAlchemy(个人观点)好,但它完成的工作非常好。所以我的建议是:除非你有非常好的理由使用SQLAlchemy,并确信值得付出努力,只需使用Django ORM即可。

但是,如果有充分的理由不使用它,那么可以替换它并使用SQLAlchemy。正如您已经描述的那样,在ORM中保留默认的Django表将为您节省一些相关的痛苦,所以这也是一个好主意。

最后,Django可能甚至不是你最好的解决方案。如果您已经了解Django并且知道它是您想要的,那么请使用它。否则,你也可以四处看看是否有更好的其他框架(在Django的近距离我只知道金字塔,对于较小的应用程序,微框架可能就足够了。)

修改:为了适应您的意见,请参阅以下详细信息:

  • 你能分享一下这些联系吗?我认为这应该是可能的,但你必须为SQLAlchemy创建一个使用Django ORM连接的连接池(或者可能创建自己的池并为两者编写适配器,不确定它是如何工作的与Django)。但是,我认为你仍然需要提供明确的联系,因为你永远不会想要与另一方发生干扰。
  • 不使用通用Django帮助程序(管理员,表单等):如果您不关心泛型,那么在更换ORM时会花费很多精力。所以这听起来像是一种理智的方式,如果你不想要它们,那么你就不会在这里失去任何东西。
  • 内存使用:你在这里做的并不多,但我不会太担心这个。如果记忆真的是一个问题,你就不会开始使用Django。