Выбрать 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)