我有两个应用程序都访问同一个数据库。第一个客户端通过TCP连接并使用SQLAlchemy写入数据库。第二个是使用Django的更典型的webapp。两者都有读/写要求。
我想统一数据库访问层,但只选择SQLAlchemy或只是Django是没有吸引力的,因为:
在同一个数据库中混合使用这两个ORM有什么问题吗?
我应该在哪个系统(Django,SQLA)中创建模型,而不是使用某种内省,例如Django inspectdb?
答案 0 :(得分:6)
首先 - 在manage.py
, WSGI处理程序和其他HTTP相关的东西之外使用Django ORM并不是很难。您可以使用任何python脚本,但它需要一些初始化(example)。
其次 - SQLA是一个非常强大的工具,它可以做一些在Django ORM中很难实现的东西(比如真正的多态和多态查询)。如果我必须选择,我个人会选择使用Django ORM作为创建模型的平台,然后在SQLA中手动映射它们,因为它更灵活,并且希望能够采用。在相反的情况下,这可能不起作用。
最后,既然你可以在双方使用Django ORM,而你只是必须使用Django ORM因为插件,我建议放弃SQLA。它是一个强大的工具,但也相当复杂。在一个数据库上运行两个不同的ORM可能会在将来导致意外问题并增加应用程序的复杂性,因此维护起来会更困难。