【问题标题】:Using both SQLAlchemy and Django ORM on the same database在同一个数据库上同时使用 SQLAlchemy 和 Django ORM
【发布时间】:2012-06-07 02:51:04
【问题描述】:

我有两个应用程序都访问同一个数据库。第一个客户端通过 TCP 连接并使用 SQLAlchemy 写入数据库。第二个是使用 Django 的更典型的 webapp。两者都有读/写要求。

我想统一数据库访问层,但是只选择 SQLAlchemy 或只选择 Django 没有吸引力,因为:

  1. 我想使用 django 身份验证、权限,也许还有第三方插件,这些插件需要 Django ORM(如果我错了,请纠正我)。
  2. 对于第一个应用程序,使用 SQLAlchemy(到目前为止)比尝试在 Django 应用程序之外使用 Django ORM 简单得多 - 它是 TCP/IP 服务器应用程序,而不是 HTTP/Web 应用程序。

在同一个数据库中混合这两个 ORM 有什么问题吗?

我应该在哪个系统(Django、SQLA)中创建模型,而不是使用某种自省,例如Django inspectdb

【问题讨论】:

  • 我刚刚找到了django-sqlalchemy 项目。我不知道它是否适合您的需求,但绝对值得一读。

标签: python django postgresql orm sqlalchemy


【解决方案1】:

首先 - 在manage.pyWSGI 处理程序 和其他与 HTTP 相关的东西之外使用 Django ORM 并不难。您可以在任何 python 脚本中使用它,但它需要一些初始化 (example)。

其次 - SQLA 是一个非常强大的工具,它能够完成在 Django ORM 中很难实现的事情(比如真正的多态性和多态性查询)。如果必须选择,我个人会选择使用 Django ORM 作为创建模型的平台,然后在 SQLA 中手动映射它们,因为它更加灵活,希望能够采用。在相反的情况下可能不起作用。

最后,既然你可以在两边都使用 Django ORM,而你只是不得不因为插件而使用 Django ORM,我建议放弃 SQLA。这是一个强大的工具,但也相当复杂。在一个数据库上运行两个不同的 ORM 可能会在未来导致意想不到的问题,并增加应用程序的复杂性,因此更难维护。

【讨论】:

  • 谢谢。我会接受你的建议并放弃 SQLA。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 2015-01-06
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多