Django Custom Database Backend
Я пытаюсь использовать бэкенд базы данных стороннего производителя и, чтобы разобраться в теме, я следовал подходу, описанному по этой ссылке: https://python.plainenglish.io/how-to-create-custom-django-database-backends-a-comprehensive-guide-for-developers-c8fb7e6a49ed. Итак, я использовал docker экземпляр python:latest (3.13.0) и установил django (5.1.13).
Я следил за статьей
Завершенная демонстрация реального мира: Создание и использование пользовательской базы данных Django Backend
в статье выше. Когда я дошел до части миграции, я получил сообщение об ошибке:
ModuleNotFoundError: No module named 'custom_backend.base.base'; 'custom_backend.base' is not a package
Поэтому я изменил настройки следующим образом:
DATABASES = {
'default': {
'ENGINE': 'custom_backend', # .base removed
'NAME': 'my_custom_db',
'USER': 'custom_user',
'PASSWORD': 'custom_password',
'HOST': 'localhost',
'PORT': '5432',
}
}
Я все еще получаю ошибку:
посмотрите, проблема, похоже, в структуре вашего пользовательского бэкенда. Проверьте, что в папке custom_backend
и ее подпапках есть файлы __init__.py
, чтобы сделать их правильными пакетами Python. В конфигурации DATABASES установите 'ENGINE': 'custom_backend.base'
, если DatabaseWrapper
находится в base.py
.
Кроме того, убедитесь, что DatabaseWrapper
правильно определяет необходимые атрибуты, например client_class
, и методы, например get_new_connection
. Протестируйте импорт вашего бэкенда (from custom_backend.base import DatabaseWrapper)
, чтобы выявить любые проблемы с путями.
За подробностями обращайтесь по адресу https://docs.djangoproject.com/en/5.1/howto/custom-db-backend/. Дайте мне знать, если это сработает.