Джанго Улей подключения
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 и неподдерживаемую базу данных для данных. Удачи!