Возможно ли иметь отдельные базы данных SQLite в одном проекте Django?

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

Спасибо.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
5
0
1 182
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

Да, низкоуровневый API для этого есть, но на данный момент ему просто не хватает удобного высокоуровневого API. Эти цитаты взяты из Джеймс Беннетт (менеджер по выпуску Django) о программировании на Reddit:

It's been there -- in an extremely low-level API for those who look at the codebase -- for months now (every QuerySet is backed by a Query, which in turn accepts a DB connection as an argument). There isn't any high-level documented API for it, but I know people who are already doing and have been doing stuff like multiple-DB/sharding scenarios.

...it's not necessarily something that needs a big write-up; the __init__() method of QuerySet accepts a keyword argument query, which should be an instance of django.db.models.sql.Query. The __init__() method of Query, in turn, accepts a keyword argument connection, which should be an instance of (a backend-specific subclass for your DB of) django.db.backends.BaseDatabaseWrapper.

From there, it's pretty easy; you could, for example, override get_query_set() on a manager to always return a QuerySet using the connection you want, or set up things like sharding logic to figure out which DB to use based on incoming query parameters, etc., etc.

Ответ принят как подходящий

Другие вопросы по теме