Возможно ли иметь отдельные базы данных SQLite в рамках одного проекта Django?
Вопрос
Я думал о создании отдельной базы данных SQLite для определенных приложений в проекте Django.
Однако я не хотел использовать прямой доступ к SQLite, если это возможно.
ORM-доступ в стиле Django к этой базе данных был бы идеальным.
Это возможно?
Спасибо.
Решение
Уже поддерживается http://docs.djangoproject.com/ ан / DEV / темы / дб / мульти-дб /
Другие советы
Да - низкоуровневый API для этого уже есть, в данный момент ему просто не хватает удобного высокоуровневого API. Эти цитаты принадлежат Джеймсу Беннетту (менеджеру по выпуску Django) по программированию reddit :
Он был там - в чрезвычайно низкоуровневом API для тех, кто смотрит на кодовую базу - уже несколько месяцев (каждый
QuerySet
поддерживаетсяQuery
, который в свою очередь принимает соединение с БД в качестве аргумента). Для него не существует высокоуровневого документированного API, но я знаю людей, которые уже делают и занимаются такими вещами, как сценарии с несколькими БД / sharding.... это не обязательно что-то, что требует большой переписки; метод
__ init __ ()
QuerySet
принимает аргумент ключевого словаquery
, который должен быть экземпляромdjango.db.models.sql .Query код>. Метод
__ init __ ()
Query
, в свою очередь, принимает аргумент ключевого словаconnection
, который должен быть экземпляром (специфичного для бэкэнда подкласса). для вашей базы данных)django.db.backends.BaseDatabaseWrapper
.Оттуда это довольно легко; вы можете, например, переопределить
get_query_set ()
в менеджере, чтобы всегда возвращатьQuerySet
, используя нужное соединение, или настроить такие вещи, как логика разделения, чтобы выяснить, какая БД использовать на основе параметров входящего запроса и т. д. и т. д.
В настоящее время нет - каждый проект использует одну базу данных, и каждое приложение должно существовать в ней. Если вы хотите иметь базу данных для конкретного приложения, вы не можете сделать это с помощью Django ORM. См. Вики-страницу Django на поддержке нескольких баз данных .
Это пока невозможно, но в вики есть некоторые разговоры об этом, Поддержка нескольких баз данных в Джанго . Он также был затронут во время основного доклада о будущем Django на DjangoCon 2008 и был сделан одна из приоритетных задач.