Django Выбрать базу данных из URL

У меня есть проект Django с несколькими базами данных (Python 2.7, Django 1.4), и мне нужно, чтобы база данных, используемая в каждой транзакции, инициируемой в запросе, была выбрана через URL из этого запроса.

Пример:

url='db1.myproject.com'

Инициирует использование 'db1' в каждой транзакции, например так:

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

Вот где моя проблема. Его практически невозможно включить в каждый вызов функции Model.objects функцию.using(dbname) (этот проект уже имеет 2 дюжины моделей, а его сборка рассчитана на масштабирование, поэтому он может иметь сотни моделей и почти Каждая модель имеет (или может иметь) реализацию a post_save/post_delete, которая действует как триггер базы данных).

Есть ли способ сообщить Джанго, что он должен изменить базу данных по умолчанию для того или иного запроса?

У меня уже есть Custom QuerySet и Custom Manager, так что, если бы я мог сказать ИМ, база данных должна быть той или иной, с которой можно справиться (я нигде не могу найти, как получить данные запроса внутри них).

Любая помощь будет оценена.

1 ответ

Решение

Я думаю, что мой ответ на подобный вопрос здесь будет делать то, что вам нужно: /questions/663848/kak-napisat-prilozhenie-na-python-podderzhivayuschee-neskolko-baz-dannyih/663858#663858

... хотя я немного обеспокоен тем, что вы, возможно, выбрали нетрадиционный или "неправильный" способ балансировки нагрузки на базу данных, возможно, эта статья может помочь с некоторыми лучшими идеями:
http://engineering.hackerearth.com/2013/10/07/scaling-database-with-django-and-haproxy/

Другие вопросы по тегам