LINUX.ORG.RU

Django и несколько БД

 , ,


0

1

Доброго времени суток, ЛОР!

Вот возник у меня один нетривиальный вопрос. Как использовать несколько баз данных в одном проекте джанго? Прочел https://docs.djangoproject.com/en/dev/topics/db/multi-db/ но нихрена не понял, может кто объяснит новичку в чем, так сказать, соль.

Суть проблемы такова - есть база данных сайта (site_db), подключена она как default, так же есть другая база (accounts_db). Как обращаться к полям базы accounts_db?

Например, есть такая структура (accounts_db):

table_a:
    account_id (primary_key) = 666
    account_name (varchar) = "Bla-bla"

Есть модель для сайта:

class Clients(model.Models):
    client_id = models.IntegerFiled(primary_key = True)

Вот никак не пойму: 1) каким образом можно выбрать все account_id (из таблицы table_a, базы accounts_db и записать это в поле client_id, таблицы clients, базы site_db? 2) Как записать что-либо в баблицу table_a? Есть еще куча вопросов, но это основные.


Как обращаться к полям базы accounts_db?

Создаешь модель для этой таблицы и как-то так -

table_a.objects.filter().using('accounts_db')

pi11 ★★★★★
()
Ответ на: комментарий от Sektor
DATABASES = {
    'default': {...},
    'account': {...},
}

DATABASE_ROUTERS = ['path.to.AccountRouter']

пишешь роутер 'path.to.AccountRouter':

class AccoutnRouter(object):
    def db_for_read(self, model, **kwargs):
        if model._meta.model_name == 'clients':
            return 'account'
        return None

Теперь при чтении из модели clients обращение будет происходить к базе описанной в 'account'

commit ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.