6

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

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

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

但这对我来说有点冒险吗,我不能使用许多 Django 功能,比如会话、重置密码。但是,一些很棒的应用程序也可以与 SqlAlchemy 一起使用,例如:django-tastypie。

但是当然数据库是最重要的,它必须很容易地发展到始终保持快速。

那么我应该使用什么解决方案?User 和 django session 表使用 Django ORM 没问题吗?剩下的我将使用 sqlAlchemy。所以我可以使用 django-registration、会话等。

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

4

1 回答 1

6

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

Django 的 ORM 很好。它不如 SQLAlchemy(个人意见),但它可以很好地完成工作。所以我的建议是:除非你有充分的理由使用 SQLAlchemy 并且确信值得付出努力,否则一切都使用 Django ORM。

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

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

编辑:为了容纳您的评论,这里有一些更多细节:

  • 你能分享一下连接吗?我认为这应该是可能的,但是您必须为使用 Django ORM 连接的 SQLAlchemy 创建一个连接池(或者可能创建您自己的池并为两者编写适配器,不太确定这如何与 Django 一起使用)。但是,我认为您仍然必须给出不同的连接,因为您永远不希望一个干扰另一个。
  • 不使用通用的 Django 助手(管理员、表单等):如果您不关心泛型,那么替换 ORM 会很痛苦。所以这听起来像是一种理智的方式,如果你一开始就不想要它们,你就不会在这里失去任何东西。
  • 内存使用情况:你可以在这里做的不多,但我不会太担心这个。如果内存确实是一个问题,那么您一开始就不会使用 Django。
于 2013-08-27T23:07:10.970 回答