【发布时间】:2015-02-28 21:50:08
【问题描述】:
我有一个用 php 编写的旧应用程序,它提供对组织成 37 个不同数据库的大型数据集的访问,每个数据库包含许多表。每个表代表不同设备的数据,每个数据库代表单个时间段的数据,所以结构如下:
Database_Time_Period_one
table machine 1
table machine 2
table machine 3
and so on...
Database_Time_Period_two
table machine 1
table machine 2
table machine 3
table machine 4
and so on...
这些表的长度各不相同,但通常包含 500,000 到 1,000,000 行数据。
该应用程序需要扩展并且需要一个新的前端,并且正在考虑使用 Django 对其进行改造,但我遇到了一个概念问题,希望有人能提供帮助。 php 代码非常简单——用户在前端选择时间段和感兴趣的表,这用于构建一个 MySQL SELECT 查询,该查询检索相关数据,然后将其存储在一个数组对象中。该查询是在一行代码中构建的,该代码基本上使用从前端获取的一个变量来标识数据库,另一个用于表。数据库和表的命名遵循包含顺序数字组件的模式,这简化了查询的构建。
根据我最初涉足 Django 时的理解,django 模型表示来自单个数据库的单个表,因此为了能够访问不同数据库中的所有表,我需要为每张桌子。这意味着拥有大约 200 个模型。另外,我需要一些方法来告诉 django 模型应该链接到哪个数据库和该数据库中的哪个表。最后,我必须能够在代码中选择用于任何给定查询的模型。我对此进行了研究,似乎可以这样做,但这意味着要创建大量路由器,并且与相对简单的php代码相比,需要大量代码。
是否有可能有简单的代码基本上告诉 django:“转到数据库 x,查看表 y,然后选择以下列”,即使这意味着规避模型的使用并将数据读入大批?
我已经在网上搜索了一个解决方案,但找不到一个似乎可以解决这种情况的示例,虽然 django 文档确实解释了多个数据库的使用,但它似乎没有提供一种简单的方法来解决这个问题访问我拥有的数据库而不创建看起来非常庞大且繁琐的代码体,并且使用原始查询的解释似乎仍然依赖于“每个表一个模型”范例。我确信我的困难是由于我对 Django 的经验有限,并且有一种方法可以做我想做的事,但我现在被卡住了。
如果有人比我有更多的 django 经验,可以为我指出正确的方向,或者告诉我这是否看起来像 django 不适合的情况,这将非常有帮助。
【问题讨论】:
标签: python mysql django database legacy