Выбрать schema при подключении к Oracle Django

Django: 1.9.13 cx-Oracle: 5.3 python: 3.6

Параметры подключения к БД

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'db_name',
        'USER': 'db_user',
        'PASSWORD': '***',
        'HOST': '***',
        'PORT': '1521',
        'OPTIONS': {
            'threaded': True,
        },
    }
}

Скажите, пожалуйста, как мне указать имя схемы? Имя нужной мне схемы - db_name, имя схемы которая использутеся - db_user.

Если я указываю у модели в Meta нужную мне схему, то это работает, однако это не решение для меня, так как моделей очень много. Опция сменить имя схемы для пользователя - недоступна.

Сделал вот так.

def change_schema(get_new_connection):

    def wrapper(*args, **kwargs):
        connection = get_new_connection(*args, **kwargs)
        cursor = connection.cursor()
        cursor.execute("ALTER SESSION SET CURRENT_SCHEMA = db_name")
        connection.commit()
        cursor.close()
        return connection

    return wrapper


import django.db.backends.oracle.base  # noqa

django.db.backends.oracle.base.DatabaseWrapper.get_new_connection = change_schema(django.db.backends.oracle.base.DatabaseWrapper.get_new_connection)
Вернуться на верх