我正在尝试编写一个使用 pyodbc 模块连接到 Apache Drill 的 python 脚本。我能够成功连接到钻头,但是当我尝试查询时,我收到一个奇怪的错误,看起来与字符编码有关。我在下面附上了我的代码,我使用的是 Python 3.4。我应该补充一点,我在使用和不使用 Pandas 的情况下都尝试过,并且得到了同样的错误,所以我认为错误在 ODBC 中的某个地方,但我对 ODBC 的经验为零。
import pyodbc
import pandas as pd
MY_DSN = "DRIVER=/opt/mapr/drillodbc/lib/universal/libmaprdrillodbc.dylib;Host=localhost;Port=31010;ConnectionType=Direct;Catalog=Drill;Schema=mfs.views;AuthenticationType=No Authentication"
conn = pyodbc.connect(MY_DSN, autocommit=True)
employee_query = "SELECT * FROM cp.`employee.json`"
data = pd.read_sql( employee_query, conn )
这是错误:
错误回溯(最后一次调用)//anaconda/lib/python3.4/site-packages/pandas/io/sql.py in execute(self, *args, **kwargs) 1471 else: -> 1472 cur.execute (*args) 1473 返回当前
错误:('HY000', '[HY000] [MapR][Drill] (1040) Drill 未能执行查询:����������������\n[30027]查询执行错误。详细信息:[ \nPARSE 错误:第 1 行第 1 列的词法错误。遇到:“\ufffd”(65533),之后:“”\n\n\n[错误 ID:669ea9b9-34d6-4281-8898- 57e8d0 (1040) (SQLExecDirectW)')