python - Django Hive 连接

标签 python django hive pyodbc django-pyodbc-azure

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 触发

请提出解决方案。提前致谢。

最佳答案

据我所知,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 作为 Django,并使用不受支持的数据库来存储数据。祝你好运!

关于python - Django Hive 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937776/

相关文章:

Python-值错误: I/O operation on closed file - traceroute script + printing

python - 将元组列表添加到python中的新元组

Django 存储 : Import Error - no module named storages

django - 带有参数 raw=True 的 save_base 在 Django 中做什么?

mysql - 即使连接参数中提供了远程服务器 IP,Sqoop 导入也始终尝试连接到本地 mysql

python - 以递归方式存储返回值?

django - Django中的前端原型(prototype)/骨架

hadoop - 如何将输入文件名作为配置单元查询中的列

sql - 如何查询由配置单元中的聚合函数创建的列?

python - 使用 pyqtgraph 和 LiDAR 快速、实时地绘制点