我有一个Python CLI程序,带有SQL数据库模型,并希望添加一个带有MVC框架的前端(如Django)。如果我已经定义了我的模型,那么将我的程序与框架接口的最佳方法是什么?
我要么:
选择#1:共享模式
My Program / | \ Binaries Model Classes | Django / \ View Controller
选择#2:创建桥接库
My Program / | \ Binaries Model Classes | My-Bridge | Django / | \ View Model Controller
选择#3:将Django用于大多数工作并从我的程序中删除模型
Classes \ My Program / | Binaries | | My-Bridge | Django / | \ View Model Controller
我正在避免选择#1(创建共享模型),因为我不知道如何使用Django的ORM和SQLAlchemy创建共享模型。
我不确定选择#2(创建一个桥)因为我不知道它是否完全使用了Django。从文档来看,似乎Django应该处理模型,因为它是一个MVC框架。
我也在避免选择#3(从程序中删除模型),因为我必须重新编写在My-Program中使用SQLAlchemy模型的所有SQLAlchemy ORM逻辑。
你们觉得怎么样?鉴于我已经编写了我的程序的CLI版本,哪种选择最好?
答案 0 :(得分:3)
我喜欢Django但是考虑到这个场景,你也可以看看Pylons,因为它们支持SQLAlchemy。或者您仍然可以通过将SQLAlchemy导入到您的视图中来使用它。 See this post就这样做的例子。
答案 1 :(得分:1)
让我们首先观察修改绕过后端的数据的前端听起来不是一个好的设计。话虽如此,我认为没有任何技术原因无法完成。我们必须记住它是保持数据完整性的数据库。这就是为什么你应该能够使用不同的ORM或一个ORM与不同的模型使用相同的数据库。
您使用的模型ORM肯定 决定如何整合 应该播放后端和前端 进行。
我不会说指示这个选择。对于后端和前端都有相同的ORM会更简单,但这不是必须的。
答案 2 :(得分:0)
我尝试将“我的程序”的大部分逻辑迁移到可导入的模块。然后,让django导入它并在它们之间共享数据库的设置。也可以让django实例运行,并进行繁琐的工作,让“我的程序”对它进行远程调用。当然,这可能需要最多的工作。
答案 3 :(得分:0)
重写模型以符合django的api听起来就像工作量最少,以及解决问题的最“正确”方法。除非你正在进行一些“高级”数据库访问,否则Djangos ORM应该能够干净利落地处理你想做的事情。当您决定要包装模型的表单以及期望模型结构的框架的所有其他各个部分时,使用完整堆栈也会支付股息。