【发布时间】:2011-07-20 14:07:42
【问题描述】:
我有分布在多台服务器上的具有相同架构的数据库,我需要路由一个 Django 模型以从不同服务器上的数据库中读取。我知道我可以使用路由器将读取发送到 settings.DATABASES 中的不同数据库,但地址可能随时更改并且保持 DATABASES 最新是不切实际的。
Django 似乎主要基于数据库别名来路由模型,它用于在django.db.connections 中查找正确的连接。有没有一种好方法可以动态地将连接和别名添加到ConnectionHandler 实例而无需破解_connections 属性?我是否应该找到某种方法来动态填充settings.DATABASES?
【问题讨论】:
-
虽然是一个老问题,但 Dave Aaron Smith 的回答可能会有所帮助:stackoverflow.com/questions/268089/… 或者文档的回答:
./manage.py syncdb --database=users,其中users是不幸的别名!不能给出明确的答案(我也需要它),我已经谷歌了,但还没有! -
我想出的解决方案是动态地将字典添加到设置中的 DATABASES 字典中。基本上,每当我需要一个新服务器时,我都会在 DATABASES 中克隆一个合适的配置,用适当的服务器名称或 IP 替换主机,然后使用服务器名称的别名将其添加到 DATABASES。