Django:我可以在本地文件而不是真实数据库上构建模型吗?
Django: Can I build a model upon local files instead of a real database?
我会先提供更多背景信息。在 "My Thoughts & Questions" 部分的最后一个项目符号中再次提出了这个问题。
背景
- 我正在处理一个看起来有点像批处理系统的遗留系统:一个作业通过一系列工作程序传递,每个工作程序处理整个作业的一部分,直到完成。作业 status/management 信息由每个工作程序沿途生成并写入 本地文本文件 中,名称如 "status_info.txt" 和 "mgmt_info.txt".
- 这个处理系统不使用任何数据库,只是本地文件系统上的纯文本文件。更改他们的代码以使用数据库也很昂贵,我想避免。
- 我主要出于两个目的尝试向该系统添加 GUI。首先,让用户查看(读取操作) 作业状态和管理信息,以便他们可以全面了解正在发生的事情以及任何步骤是否有任何错误。其次,允许用户通过 更改(写入操作) 作业状态和管理信息来重做一个或多个步骤。
我目前的解决方案
- 我正在考虑使用 Django 来开发 GUI,因为:
- Django 的开发速度很快; Django 是基于网络的,所以几乎不需要安装;
- 我想启用系统的远程监控,这样基于 Web 的浏览器内 GUI 更有意义;
- 我以前用过一些 Django,所以有一些经验。
- 然而,我发现 Django 主要使用真实的数据库:SQLite、MySQL、PostgreSQL 等。用户定义的模型将匹配到这些数据库中的 tables Django 自动。但是,遗留系统仅生成文本文件。
我的想法和问题
- 幸运的是,我注意到文本文件都是以下两种格式之一:
- 多行字符串;
- 多行键值对。
- 两种格式看起来都很容易匹配数据库 table 设计。例如,"multiple lines of strings" 可以看作是单列文本的 DB table,而 "multiple lines of key-value pairs" 可以看作是两列 table.
- 因此,我的问题是:我可以在本地文本文件而不是真实数据库上构建我的模型,并以某种方式覆盖 Django 中某处充当接口的一些代码吗?核心框架和外部数据库,所以这些文本文件将对 Django 起到 "database" 的作用,并且 reading/writing 操作将发生在这些文件上?我在互联网和 Whosebug 上搜索过,但不够幸运。如果你能给我一些有用的链接,我将不胜感激。
不该做什么。
如果您要使用文件重现 RDBMS,您将付出很多努力,我的意思是要付出很多痛苦和艰苦的工作。即使是像 sqlite 这样最简单的 RDBMS,也要投入数千工时。如果您要将文件导入 Django 或任何其他框架,则需要为其编写自定义后端。
做什么
创建由 RDBMS 支持的 django 模型并将文件导入其中。或者,由于此数据似乎主要是键值对,您可以使用 Mongodb 或 redis.
您可以使用 inotify 来监视文件系统,以检测批处理系统何时创建了新文件。发生这种情况时,您可以调用 来处理该文件并将其数据导入数据库。
其余部分是直接的 django 应用程序。
我会先提供更多背景信息。在 "My Thoughts & Questions" 部分的最后一个项目符号中再次提出了这个问题。
背景
- 我正在处理一个看起来有点像批处理系统的遗留系统:一个作业通过一系列工作程序传递,每个工作程序处理整个作业的一部分,直到完成。作业 status/management 信息由每个工作程序沿途生成并写入 本地文本文件 中,名称如 "status_info.txt" 和 "mgmt_info.txt".
- 这个处理系统不使用任何数据库,只是本地文件系统上的纯文本文件。更改他们的代码以使用数据库也很昂贵,我想避免。
- 我主要出于两个目的尝试向该系统添加 GUI。首先,让用户查看(读取操作) 作业状态和管理信息,以便他们可以全面了解正在发生的事情以及任何步骤是否有任何错误。其次,允许用户通过 更改(写入操作) 作业状态和管理信息来重做一个或多个步骤。
我目前的解决方案
- 我正在考虑使用 Django 来开发 GUI,因为:
- Django 的开发速度很快; Django 是基于网络的,所以几乎不需要安装;
- 我想启用系统的远程监控,这样基于 Web 的浏览器内 GUI 更有意义;
- 我以前用过一些 Django,所以有一些经验。
- 然而,我发现 Django 主要使用真实的数据库:SQLite、MySQL、PostgreSQL 等。用户定义的模型将匹配到这些数据库中的 tables Django 自动。但是,遗留系统仅生成文本文件。
我的想法和问题
- 幸运的是,我注意到文本文件都是以下两种格式之一:
- 多行字符串;
- 多行键值对。
- 两种格式看起来都很容易匹配数据库 table 设计。例如,"multiple lines of strings" 可以看作是单列文本的 DB table,而 "multiple lines of key-value pairs" 可以看作是两列 table.
- 因此,我的问题是:我可以在本地文本文件而不是真实数据库上构建我的模型,并以某种方式覆盖 Django 中某处充当接口的一些代码吗?核心框架和外部数据库,所以这些文本文件将对 Django 起到 "database" 的作用,并且 reading/writing 操作将发生在这些文件上?我在互联网和 Whosebug 上搜索过,但不够幸运。如果你能给我一些有用的链接,我将不胜感激。
不该做什么。
如果您要使用文件重现 RDBMS,您将付出很多努力,我的意思是要付出很多痛苦和艰苦的工作。即使是像 sqlite 这样最简单的 RDBMS,也要投入数千工时。如果您要将文件导入 Django 或任何其他框架,则需要为其编写自定义后端。
做什么
创建由 RDBMS 支持的 django 模型并将文件导入其中。或者,由于此数据似乎主要是键值对,您可以使用 Mongodb 或 redis.
您可以使用 inotify 来监视文件系统,以检测批处理系统何时创建了新文件。发生这种情况时,您可以调用
其余部分是直接的 django 应用程序。