DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'sampletest',
'OPTIONS': {
'driver': '/opt/cloudera/hiveodbc/lib/64/libclouderahiveodbc64.so',
'dsn': 'Hive1',
'host_is_server': True,
},
}
}
上面是与hive数据库连接的django设置;在这里,我在运行项目时面临一个问题,如下所示:
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条答案
按热度按时间xam8gpfp1#
好吧,django和hive不兼容。你使用的数据库引擎,
django-pyodbc-azure
,仅用于sql server。django支持postgresql、mysql、sqlite和oracle开箱即用。sql server通过第三方引擎支持,如django-pyodbc-azure
. 我不知道目前支持的任何其他引擎(mongodb以前有一个引擎,但没有得到维护)。也就是说,你可以使用上述引擎之一的django的
default
设置和orm交互,并使用pyodbc
直接连接到python级别的hive;我也做了类似的事情,我使用postgresql for django,以及一个不受支持的数据数据库。祝你好运!