Как я могу вызвать/достичь "gettype()" из соединения с oracledb через объекты, определенные в "django.db"?
У меня есть небольшое Django-приложение с Oracle DB в качестве базы данных.
Я использую "Django 5.0.3" с "oracledb 2.0.1".
В библиотеке "oracledb" у объекта "connection" есть метод "gettype()"
- смотрите https://python-oracledb.readthedocs.io/en/latest/api_manual/connection.html#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, является оберткой.