2012-01-26 3 views
0

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

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

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

Разумеется, универсальное решение является предпочтительным, но в настоящее время приемлемо только решение с MySQL.

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

ответ

1

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

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

+0

Спасибо. Я рассмотрел ваше предложение, и все работает отлично. Это и некоторые threadlocal вещи, и я могу использовать некоторое промежуточное программное обеспечение для переключения баз данных по мере необходимости. К сожалению, Django * не может * использовать набор данных EMBL, поскольку они явно сделаны с таблицами без PK. Такой файл ... –

+0

Что такое "EMBL datasets"? –

+0

Запасные наборы данных генома, предоставленные Европейской библиотекой молекулярной биологии. Подробности см. В ensembl.org. Мы пытаемся использовать эти наборы данных в качестве дополнения к коммерческому проекту, и вопрос заключается в том, с какого слоя мы начинаем: база данных, настроенная ORM (написанная в очень многословном, очень педантичном Perl) или выше? –

Смежные вопросы