Возможно ли иметь отдельные базы данных SQLite в рамках одного проекта Django? - PullRequest
4 голосов
/ 03 октября 2008

Я рассматривал возможность создания отдельной базы данных SQLite для определенных приложений в проекте Django.
Однако я не хотел использовать прямой доступ к SQLite, если это возможно. ORM-доступ в стиле Django к этой базе данных был бы идеальным.
Это возможно?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 04 октября 2008

Да - низкоуровневый 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, используя нужное соединение, или настроить такие вещи, как логика разделения, чтобы определить, какую БД использовать на основе параметров входящего запроса и т. д. .

4 голосов
/ 21 июля 2010
2 голосов
/ 03 октября 2008

В настоящее время нет - каждый проект использует одну базу данных, и каждое приложение должно существовать в ней. Если вы хотите иметь базу данных для конкретного приложения, вы не можете сделать это с помощью Django ORM. См. Вики-страницу Django на Поддержка нескольких баз данных .

0 голосов
/ 03 октября 2008

Это пока невозможно, но в вики есть некоторые разговоры об этом, Поддержка нескольких баз данных в Django . Он также был затронут во время выступления о будущем Django на DjangoCon 2008 и стал одним из наиболее приоритетных вопросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...