Как я могу вызвать/достичь "gettype()" из соединения с oracledb через объекты, определенные в "django.db"?

У меня есть небольшое Django-приложение с Oracle DB в качестве базы данных.

Я использую "Django 5.0.3" с "oracledb 2.0.1".

В библиотеке "oracledb" у объекта "connection" есть метод "gettype()"

Как я могу вызвать/достичь этого метода через объекты, определенные в "django.db"?

Конфигурация БД в файле "settings.py"

import oracledb
from pathlib import Path

# Database
d = r"/path/to/oracle/instantclient"
oracledb.init_oracle_client(lib_dir=d)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': '<db-name>',
        'USER': '<db-user>',
        'PASSWORD': '<db-password>',
    }
}

Например, он не работает через объект "соединение":

from django.db import connection

def myfunc():
    with connection.cursor() as c:
        c.execute("select * from v$version")
        rows = c.fetchall()
        print(rows)

    my_db_type = connection.gettype("MY_DB_TYPE")
[('Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production', 'Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 
- Production\nVersion 19.23.0.1.0', 'Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production', 0)]
ERROR:root:global error:
ERROR:root:global Exception type: AttributeError
ERROR:root:global Exception message: 'DatabaseWrapper' object has no attribute 'gettype'

Вы должны получить доступ к базовому объекту соединения следующим образом:

actual_conn = connection.cursor().connection

Объект соединения, который предоставляет Django, является оберткой.

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