是否可以在同一个网络应用程序中混合使用 2 个 ORMS?

Is it possible to mix 2 ORMS in same web app?

那么是否可以在同一个 Web 应用程序中混合使用 2 个 ORM,如果可以,那么最佳情况如何?为什么这样? - 我正在使用 flask-mysqldb 在 flask 中开发一个 web 应用程序,我到了需要实现 auth 系统的地步,而在 flask-mysqldb 上没有安全的方法来做到这一点。 - 话虽如此,我正在尝试实施 flask-security,但它只适用于 flask-sqlalchemy,所以我正在尝试将 sqlalchemy 与 mysqldb 混合使用,在此之前我想知道它是否是最佳的,是否 works.That将导致在 sqlalchemy 和其他数据中使用用户身份验证 mysqldb.Thanks!

每个 orm 都可以有一个模块。一个模块可以调用auth_db,另一个可以调用data_db。在您的主应用程序文件中,只需导入两个模块并初始化数据库连接。也就是说,这种方法在未来将更难维护,其他开发人员也更难理解发生了什么。我建议将您的 flask-mysqldb 代码移动到 sqlalchemy,这样您就只使用一个 ORM。

可以,但不推荐。考虑一下:

  • 你的应用程序的一半不会受益于适当的 ORM 提供的任何东西
  • 向 table 添加字段意味着在许多地方编辑原始 SQL,然后更改模型。
    不要忘记让它们保持同步。

或者,您可以将所有使用原始 mysqldb 的东西移植到 SQLAlchemy:

  • 需要向您的 table 添加一个字段?只需更改一处模型即可。
  • 不喜欢 SQL ORM 为您生成的查询?您对此仍有低级控制权。