2008-10-03 1 views
4

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

спасибо.

ответ

2

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

5

Да - низкоуровневый API для этого на месте, на данный момент отсутствует удобный API высокого уровня. Эти цитаты взяты из James Bennett (Django's release manager) on programming reddit:

Это был - в API крайне низкий уровня для тех, кто смотрит на кодовом - в течение нескольких месяцев (каждый QuerySet подкреплен Query, который, в свою очередь, принимает DB в качестве аргумента). Для него нет документально подтвержденного API высокого уровня, но я знаю людей, которые уже делают, и делали такие вещи, как сценарии с несколькими DB/sharding.

... это не обязательно то, что требует большой рецензии; метод __init__()QuerySet принимает ключевое слово query, которое должно быть экземпляром django.db.models.sql.Query. Метод __init__()Query, в свою очередь, принимает аргумент ключевого слова connection, который должен быть экземпляром (базовым подклассом для вашего БД) django.db.backends.BaseDatabaseWrapper.

Оттуда это довольно легко; вы могли бы, например, переопределить get_query_set() на менеджере, чтобы всегда возвращать QuerySet с использованием необходимого вам соединения или настраивать такие вещи, как логика осколков, чтобы выяснить, какую БД использовать на основе входящих параметров запроса и т. д. и т. д.

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