Джанго Улей подключения

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'sampletest',
        'OPTIONS': {
           'driver': '/opt/cloudera/hiveodbc/lib/64/libclouderahiveodbc64.so',
           'dsn': 'Hive1',
           'host_is_server': True,
        },
    }
}

Выше приведены настройки Django для связи с базой данных Hive; Здесь я сталкиваюсь с проблемой при запуске проекта, которая приведена ниже:

django.db.utils.Error: ('HY000', u"[HY000] [Cloudera][Hardy] (80) Syntax or semantic analysis error thrown in server while executing query. Error message from server: Error while compiling statement: FAILED: ParseException line 1:7 character '@' not supported here\nline 1:8 character '@' not supported here (80) (SQLExecDirectW)")

Запрос, где он происходит, на самом деле является стандартным запросом

"SELECT @@TRANCOUNT"

который запускается Django во время подключения

Пожалуйста, предложите решение. Заранее спасибо.

1 ответ

AFAIK, Django не совместим с Django Hive. Движок базы данных, который вы используете, django-pyodbc-azure, только для SQL Server. Django поддерживает PostgreSQL, MySQL, SQLite и Oracle из коробки. SQL Server поддерживается сторонними движками, такими как django-pyodbc-azure, Я не знаю ни одного другого поддерживаемого в настоящее время движка (у MongoDB был движок, но он не поддерживался).

Тем не менее, вы можете, вероятно, использовать один из вышеперечисленных двигателей для Джанго default настройки и взаимодействия ORM, и использовать pyodbc напрямую подключаться к Hive на уровне Python; Я делаю что-то подобное, где я использую PostgreSQL для Django и неподдерживаемую базу данных для данных. Удачи!

Другие вопросы по тегам