I’m running into an issue with executing queries over ODBC with Python 3.7. Everything seems to be working fine in the installation - I can query normally via the web UI and - surprisingly - Tableau works just fine using the ODBC connector. Is there something incorrect I’m doing in Python?
host = "127.0.0.1"
port = 31010
uid = "jnettles"
pwd = "xxxx"
driver = "Dremio Connector"
# also tried below as driver option - same result
# driver = "/Library/Dremio/ODBC/lib/libdrillodbc_sbu.dylib"
cnxn = pyodbc.connect("Driver={};ConnectionType=Direct;HOST={};PORT={};AuthenticationType=Plain;UID={};PWD={}".format(driver, host,port,uid,pwd),autocommit=True)
sql = '''SELECT * FROM "@jnettles"."test-repo.people_files" LIMIT 10'''
# This exact same SQL works just fine in Tableau using ODBC
dataframe = pandas.read_sql(sql, cnxn)
This the error I’m getting—
---------------------------------------------------------------------------
Error Traceback (most recent call last)
/usr/local/lib/python3.7/site-packages/pandas/io/sql.py in execute(self, *args, **kwargs)
1430 else:
-> 1431 cur.execute(*args)
1432 return cur
Error: ('HY000', '[HY000] [Dremio][Connector] (1040) Dremio failed to execute the query: SELECT * FROM "@jnettles"."test-repo.people_files" LIMIT 10\n[30038]Query execution error. Details:[ \nSYSTEM ERROR: CompileException: Line 157, Column 30: No applicable constructor/method found for actual parameters "org.apache.arrow.vector.holders.UnionHolder"; candidates are: "public void com.dremio.exec.vector.complex.fn.JsonWriter.write(org.apache.arrow.vector.comple...[see log] (1040) (SQLExecDirectW)')
I’m running Dremio in Docker on macOS (3.2.0-201905102005330382-0598733), and installed the ODBC driver per instructions on the site for mac.
(I just tested and same behavior in Python 2.7…)