Поддержка 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()
]
я получаю списки данных объектов, а не наборы запросов.
Вопрос
- Правильно ли сейчас приступить к решению проблемы, описанной выше?
- Есть ли способ импортировать / возвращать Querysets/ итерируемые объекты Model, используя реализацию, описанную выше?
- Существуют ли API-интерфейсы, которые могут обрабатывать соединение с несколькими базами данных Django? Если да, пожалуйста, укажите ссылки?
Спасибо за ваше время.
Мое решение (пока)
Кажется, стратегия, которую я планировал использовать, была излишней. Итак, я решил принять другую стратегию. Тем не менее, кажется, что я на полпути, но я предвижу, что это приведет к СУХОЙ.
Решение состоит в том, чтобы REST-API на обоих сайтах возвращали данные в формате json.
т.е. вызовите API сайта A, загрузите возвращенные данные и обработайте их на сайте B.