Поддержка Django Multi-Database

NB. Я уже ознакомился с официальной документацией Django здесь docs.djangoproject.com/en/dev/topics/db/multi-db, но на странице ничего не отвечает на мои вопросы.

Я возглавил команду по разработке двух веб-приложений Django, и мы достигли стадии, когда мы хотели бы сделать функции на каждом из сайтов доступными друг для друга. Таким образом, мы бы придерживались принципа СУХОЙ.

Тематическое исследование

Сайт A имеет функции A+, и я хотел бы сделать его доступным на сайте B, через Django Queryset и наоборот.

До сих пор

Я определил в файле settings.py для обоих сайтов конфигурации базы данных, добавил общую конфигурацию маршрутизатора для всех приложений с помощью этого поста: http://diegobz.net/2011/02/10/django-database-router-using-settings/ и может успешно запрашивать базы данных для A и B с обоих сайтов, используя импортные соединения из django.db. Тем не менее, с ниже:

def dictfetchall(cursor):
    "Returns all rows from a cursor as a dict"
    desc = cursor.description
    return[
        dict(zip([col[0] for col in desc], row))
        for row in cursor.fetchall()
        ]

я получаю списки данных объектов, а не наборы запросов.

Вопрос

  1. Правильно ли сейчас приступить к решению проблемы, описанной выше?
  2. Есть ли способ импортировать / возвращать Querysets/ итерируемые объекты Model, используя реализацию, описанную выше?
  3. Существуют ли API-интерфейсы, которые могут обрабатывать соединение с несколькими базами данных Django? Если да, пожалуйста, укажите ссылки?

Спасибо за ваше время.

Мое решение (пока)

Кажется, стратегия, которую я планировал использовать, была излишней. Итак, я решил принять другую стратегию. Тем не менее, кажется, что я на полпути, но я предвижу, что это приведет к СУХОЙ.

Решение состоит в том, чтобы REST-API на обоих сайтах возвращали данные в формате json.

т.е. вызовите API сайта A, загрузите возвращенные данные и обработайте их на сайте B.

0 ответов

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