如何使用Django处理数百个相同的数据库?

时间:2011-11-20 16:33:51

标签: mysql database django

我有一个遗留系统,我想用Django编写的应用程序进行扩展。该系统在同一台服务器上托管数百个小型网站。 Mysql服务器负责处理数据:每个网站都有自己的Mysql数据库(从主机名派生的名称),具有相同的表结构。所有站点(主机名和数据库名称)的列表都在一个单独数据库的表中进行管理。

我根本不需要Django用户/会话表,也不需要Django管理模块。

是否可以编写Django代码,以便:

  1. 每个Mysql查询都会获得正确的数据库名称(最终基于请求的Host标题)
  2. 我不必在例如中对主机名列表进行硬编码。 settings.py。当添加或重命名网站时,一切都“正常”(或者我可以发送信号重新加载网站列表)。

1 个答案:

答案 0 :(得分:1)

Django支持multi-db,这意味着,您可以在一个项目中使用多个DB。

Documentation is here

另一方面,你的第二个需求可能无法以简单的方式实现。不知何故,您必须向settings.py文件添加新的数据库描述。有一种可能的方法来解决这个问题,但在某些方面它并不是一个好的方法......

当您定义新网站时(从网页等UI界面),您可以编写一个脚本来打开settings.py并将新的数据库信息添加到DATABASE模式并保存并重新加载您的设置。但正如我所说,以编程方式编写settings.py是危险的。