Как я могу использовать локальную БД SQLite3 для тестирования и БД MSSQL для производства в Django?

Итак, у меня есть проект, над которым я сейчас работаю, где мой пользователь DB не имеет возможности создавать и уничтожать базы данных на сервере, где хранится моя производственная база данных. Поэтому я решил попробовать разместить свои тестовые базы данных в базе данных sqlite3, которая поставляется вместе с Django. Я попытался сделать это, о чем, кажется, читал где-то в документации Django, но это не работает и продолжает выдавать мне ошибку:

AttributeError: объект 'PosixPath' не имеет атрибута 'startswith'

Код:

DATABASES = {
    # C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA
    'default': {
        'ENGINE': 'engine',
        'NAME': 'db',
        'HOST': '1.1.1.1',
        'PORT': '1',
        'USER': 'username',
        'PASSWORD': 'password',
        'OPTIONS': {
            'driver': 'driver',
            'connection_timeout': 15
        },
        'TEST': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'testdb.sqlite3',
            'HOST': 'localhost'
        }
    },
}

Я чувствую, что я близок к этому, поэтому я попробовал удалить BASE_DIR и просто использовать имя файла, но это все еще посылает мне сообщения о том, что пользователь не имеет возможности создавать БД в master, что означает, что он все еще подключается к тому же самому серверу PRODUCTION.

Лучшим вариантом является использование всегда одной и той же базы данных для тестирования и для производства, чтобы иметь непрерывность с ней.

Вы можете создать базу данных вручную и использовать опцию --keepdb, чтобы избежать создания/уничтожения базы данных при каждом запуске теста.

python manage.py test --keepdb

Кроме этого конфига, вы также должны создать маршрутизацию базы данных, чтобы направлять запросы в нужную БД.

Ps: хост не требуется

Вот документ: https://docs.djangoproject.com/en/3.2/topics/db/multi-db/#database-routers

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