#django
#django
Вопрос:
django.db.connection.cursor() возвращает соединение с базой данных по умолчанию, а не маршрутизируемую.
Как мне создать курсор для базы данных, выбранной для моего приложения Django конфигурацией проекта?
Ответ №1:
django.db
предоставляет словарь всех подключений в соответствии с ключами, которые вы используете в своем словаре в модуле настроек:
from django.db import connections
cursor = connections['my_db_alias'].cursor()
Это задокументировано здесь .
Комментарии:
1. Как вы получаете строку ‘my_db_alias’ (определенную при настройке проекта с помощью некоторой сложной процедуры маршрутизации) на уровне приложения?
Ответ №2:
Хорошо, я изучил django.db.models.Класс модели и обнаружил, что маршрутизируемое соединение, если оно получается через маршрутизатор каждый раз:
from django.db import connections, router
using = using or router.db_for_write(self.__class__, instance=self)
connection = connections[using]
К сожалению, маршрутизатор принимает подкласс Model в качестве первого аргумента своего метода db_for_write() .