我有一个多数据库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和一个自定义管理器,所以,如果我可以告诉他们数据库应该是这个或那个可以做到的技巧(我找不到任何地方如何在其中获取请求数据)。
任何帮助都会被贬低。
答案 0 :(得分:0)
我认为我在这里对类似问题的回答将满足您的需求: https://stackoverflow.com/a/21382032/202168
...虽然我有点担心你可能选择了一种非常规或“错误”的数据库负载平衡方式,但这篇文章可能有助于提出一些更好的想法:
http://engineering.hackerearth.com/2013/10/07/scaling-database-with-django-and-haproxy/