2
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によってトリガーされます

解決策を提案してください。前もって感謝します。

4

1 に答える 1

4

私の知る限り、Django は Hive と互換性がありません。使用しているデータベース エンジンdjango-pyodbc-azureは、SQL Server 専用です。Django は、PostgreSQL、MySQL、SQLite、および Oracle をすぐにサポートします。SQL Server は、 などのサード パーティ エンジンを通じてサポートされていdjango-pyodbc-azureます。現在サポートされている他のエンジンについては知りません (MongoDB にはエンジンがありましたが、メンテナンスされていません)。

defaultとは言うものの、Django の設定と ORM のやり取りに上記のエンジンのいずれかを使用し、pyodbc直接使用して Python レベルで Hive に接続することができます。私は、Django に PostgreSQL を使用し、データ用にサポートされていないデータベースを使用する場合に、同様のことを行います。幸運を!

于 2017-12-22T11:30:25.030 に答える