0

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

前任:

url='db1.myproject.com'

将触发在每个事务中使用“db1”,如下所示:

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

这就是我的问题所在。它几乎不可能在每次调用 'Model.objects' 时都包含 '.using(dbname)' 函数(这个项目已经有 2 打模型,并且它的构建考虑到了缩放,所以它可以有数百个模型,而且几乎每个模型都有(或可能有)一个 post_save/post_delete 的实现,它充当数据库触发器)。

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

我已经有一个自定义查询集和一个自定义管理器,所以,如果我可以告诉他们数据库应该是这个或那个可以解决问题(我找不到任何地方如何在其中获取请求数据)。

任何帮助将不胜感激。

4

1 回答 1

0

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

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

于 2014-06-13T14:15:52.580 回答