Dj-lite-tenant - это экспериментальная библиотека для Django, которая выводит изоляцию данных в мультиарендных (multi-tenant) приложениях на абсолютный максимум. Она автоматически создает отдельную базу данных SQLite для каждого пользователя.
Если вы строите легковесный SaaS или пет-проект, где пользователи не должны пересекаться данными ни при каких обстоятельствах, этот инструмент предлагает элегантное решение без развертывания тяжелых серверов БД.
.sqlite3 для указанных в настройках приложений.ForeignKey между БД пользователя и общей базой данных (например, таблицей самого User) работают прозрачно благодаря механизму ATTACH DATABASE в SQLite. Django ORM сама генерирует валидные SQL-запросы.USE_DATABASE_TEMPLATE. Первая чистая БД выполнит миграции, сохранится как шаблон, а для новых пользователей файлы будут просто клонироваться за миллисекунды.with tenant_db(user):.Установка:
uv add dj-lite-tenant
# или pip install dj-lite-tenant
Минимальная настройка в
settings.py:INSTALLED_APPS = [
...
"dj_lite_tenant",
]
MIDDLEWARE = [
...
"django.contrib.auth.middleware.AuthenticationMiddleware",
"dj_lite_tenant.middleware.TenantDatabaseMiddleware", # Строго после Auth
]
DATABASE_ROUTERS = ["dj_lite_tenant.routers.TenantDatabaseRouter"]
DJ_LITE_TENANT = {
"DIR": BASE_DIR / "db/tenants",
"APPS": {"notes"}, # Приложения, данные которых улетят в персональные БД
}
Для применения новых миграций ко всем базам данных пользователей используется специальная команда:
python manage.py migrate_tenant_dbs.#Django #Python #SQLite #MultiTenant #Backend #WebDev #SaaS #Database #OpenSource
https://github.com/adamghill/dj-lite-tenant
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - adamghill/dj-lite-tenant: Multi-tenant SQLite databases for Django.
Multi-tenant SQLite databases for Django. Contribute to adamghill/dj-lite-tenant development by creating an account on GitHub.