Django从URL中选择数据库

时间:2014-06-13 13:18:43

标签: django python-2.7 multi-database

我有一个多数据库Django项目(Python 2.7,Django 1.4),我需要通过该请求的url选择在请求中触发的每个事务中使用的数据库。

例如:

url='db1.myproject.com'

会触发使用' db1'在每笔交易中,如下:

MyModel.objects.using('db1').all()

这就是我的问题所在。 它的真正不可能包括每次调用“模特。对象”' ' .using(dbname)'函数(这个项目已经有2打模型,其构建时考虑了扩展,因此可能有数百个模型,而且几乎每个模型都有(或可能有)post_save / post_delete的实现,它充当数据库触发器)。

有没有办法告诉django他应该为这个或那个请求更改默认数据库?

我已经有了一个Custom QuerySet和一个自定义管理器,所以,如果我可以告诉他们数据库应该是这个或那个可以做到的技巧(我找不到任何地方如何在其中获取请求数据)。

任何帮助都会被贬低。

1 个答案:

答案 0 :(得分:0)

我认为我在这里对类似问题的回答将满足您的需求: https://stackoverflow.com/a/21382032/202168

...虽然我有点担心你可能选择了一种非常规或“错误”的数据库负载平衡方式,但这篇文章可能有助于提出一些更好的想法:
http://engineering.hackerearth.com/2013/10/07/scaling-database-with-django-and-haproxy/