0
votes

I have a Python script which runs successfully from my Windows workstation and I am trying to migrate it to a Unix server. The script connects to a Teradata database using pyodbc package and executes a bunch of queries. When it is execute from the server, it triggers the following error message:

Error: ('HY000', 'The driver did not supply an error!')

I am able to consistently reproduce the error with the following code snippet executed on the server:

import pyodbc
oConnexion = pyodbc.connect("Driver={Teradata};DBCNAME=myserver;UID=myuser;PWD=mypassword", autocommit=True)
print("Connected")
oCursor = oConnexion.cursor()
oCursor.execute("select 1")
print("Success")

Configuration:

  • Python 3.5.2
  • Pyodbc 3.1.2b2
  • UnixODBC Driver Manager
  • Teradata 15.10

After enabling ODBC logging and running a simple SELECT query, I have noticed the following Invalid cursor GeTypeInfo errors:

Data Type = SQL_VARCHAR
[ODBC][57920][1481847636.278776][SQLGetTypeInfo.c][190]Error: 24000
[ODBC][57920][1481847636.278815][SQLGetTypeInfo.c][168]
                Entry:
                        Statement = 0x1bc69e0
                        Data Type = Unknown(-9)
[ODBC][57920][1481847636.278839][SQLGetTypeInfo.c][190]Error: 24000
[ODBC][57920][1481847636.278873][SQLGetTypeInfo.c][168]
                Entry:
                        Statement = 0x1bc69e0
                        Data Type = SQL_BINARY
[ODBC][57920][1481847636.278896][SQLGetTypeInfo.c][190]Error: 24000

Also, trying to list the connection attributes using the following code:

for attr in vars(pyodbc):
        print (attr)
        value = oConnexion.getinfo(getattr(pyodbc, attr))
        print('{:<40s} | {}'.format(attr, value))

Fails with:

SQL_DESCRIBE_PARAMETER
Traceback (most recent call last):
  File "test.py", line 28, in <module>
    value = oConnexion.getinfo(getattr(pyodbc, attr))
pyodbc.Error: ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLGetInfo)')
1

1 Answers

0
votes

Upgrading to the last (unreleased) version of pyodbc (v4) solved the issue. https://github.com/mkleehammer/pyodbc/tree/v4