Django: функциональность "показать базы данных"? - PullRequest
0 голосов
/ 26 января 2012

У меня есть странный вариант использования унаследованной базы данных: у меня есть несколько баз данных с (1) точно такой же схемой, но (2) очень разными наборами данных.Базы данных, целые базы данных, с этой схемой, добавляются в общий набор данных каждую неделю.

Существует ли способ (1) самоанализа сервера , чтобы узнать, какие базы данных доступны, и, если да, есть ли способ (2) направить в нужную базу данных по URL, а не текущим решением для каждой модели (поскольку мои модели не меняются, только связанные базовые таблицы)?

Можно ли сделать этот самоанализ динамическим, поэтому каждый раз, когда кто-то заходит на домашнюю страницу, я могу показать ему список доступных баз данных?

Конечно, предпочтительнее общее решение, но MySQL-в настоящее время приемлемо только решение.

(вариант использования библиотеки геномов Европейской лаборатории молекулярной биологии, которая публикуется каждые несколько месяцев в виде набора дампов базы данных MySQL, по одной базе данных на вид, с базовой схемой околодвадцать таблиц, которые хорошо отображаются в шести или около того приложениях. Схема стабильна и не менялась годами.)

1 Ответ

1 голос
/ 26 января 2012

Да, вы можете запускать любой необработанный SQL , и show databases не является исключением. Но будет сложно изменить список доступных баз данных и переключаться между ними. Боюсь, что это потребует модификации или исправлений внутренних компонентов django.

Обновление: подождите! Я изучил код, стоящий за django.db.connections, и обнаружил, что если вы просто расширите settings.DATABASES во время выполнения, то сможете использовать SomeModel.objects.using('some-new-database').all() в коде. Не проверял, но верьте, это должно работать!

...