Я пытаюсь использовать несколько баз данных, где одна БД по умолчанию, а вторая БД: память БД. Из описания в Документах (показано ниже) кажется, что маршрутизация по умолчанию должна быть в порядке. Но это говорит о том, что объекты «привязаны» к своей исходной базе данных. Как существует «Оригинальная» база данных?
Когда я впервые начал реализовывать это, я ожидал, что в классах Model будет META, которая будет определять его базу данных, но, похоже, это не так. Я вижу примеры, когда у людей есть Отображение Приложений в БД, что было бы идеально для моего сценария, но потом они все равно оборачиваются и пишут Маршрутизацию.
Я не хочу всегда добавлять базу данных Сохранить звонки, так как это может привести к ошибкам программирования. Существуют ли официальные настройки для сопоставления приложения с базой данных или модели с базой данных? Или всегда требуется написать маршрутизатор для использования нескольких баз данных.
# Is DATABASE_APPS_MAPPING just a name that some developer chose to use or is it a
# real Django thing that would do what I want?
DATABASE_APPS_MAPPING = {'app1': 'default', 'app2': 'in_memory'}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'in_memory': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}
Do c Содержимое :
Самый простой способ использовать несколько Базы данных является настройка схемы маршрутизации базы данных. Схема маршрутизации по умолчанию гарантирует, что объекты остаются «привязанными» к своей исходной базе данных (т. Е. Объект, извлеченный из базы данных foo, будет сохранен в той же базе данных). Схема маршрутизации по умолчанию гарантирует, что если база данных не указана, все запросы возвращаются к базе данных по умолчанию.