3

我有一个带有 SQL 数据库模型的 Python CLI 程序,并且想添加一个带有 MVC 框架(例如 Django)的前端。如果我已经定义了我的模型,那么将我的程序与框架接口的最佳方式是什么?

我是否:

  1. 重写模型,使其由 Django 和我的程序共享
  2. 编写一个在 Django 和我的程序之间进行接口的层
  3. 从我的程序中删除模型并让 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 版本,哪种选择最好?

4

4 回答 4

3

我喜欢 Django,但考虑到这种情况,你也可以看看Pylons,因为它们支持 SQLAlchemy。或者您仍然可以通过将 SQLAlchemy 导入您的视图来使用它。有关执行此操作的示例,请参阅此帖子。

于 2011-03-26T15:11:18.280 回答
1

让我们首先观察一下绕过后端修改数据的前端听起来不是一个好的设计。话虽如此,我认为没有任何技术原因无法完成。我们必须记住,它是保持数据完整性的数据库。这就是为什么您应该能够在同一个数据库中使用不同的 ORM 或一个具有不同模型的 ORM。

您使用的模型 ORM 明确规定了后端和前端之间的集成应该如何进行。

我不会说它决定了选择。后端和前端使用相同的 ORM 会更简单,但这不是必须的。

于 2011-03-27T11:56:24.933 回答
0

重写模型以符合 django 的 api 听起来是最少的工作量,也是解决问题的最“正确”的方法。除非您正在执行一些“高级”数据库访问,否则 Django 的 ORM 应该能够干净地处理您想做的事情。当您决定要包装模型的表单以及需要模型结构的框架的所有其他位时,使用完整堆栈也会带来好处。

于 2011-03-26T15:18:11.897 回答
0

我会尝试将“我的程序”的大部分逻辑迁移到可导入的模块。然后,让 django 导入它并在它们之间共享数据库的设置。也可以让 django 实例运行,并进行繁重的工作,然后让“我的程序”对其进行远程调用。当然,这可能需要最多的工作。

于 2011-01-02T08:59:39.683 回答