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/. Дайте мне знать, если это сработает.

Вернуться на верх