Reputation: 79
I am building an app that is supposed to establish an ODBC connection with a specific database server (An Openlink Virtuoso instance).
Until now I've been using a DSN specified in my odbc.ini
file, and it worked properly. But now I am trying to make it so that the app embarks DSN information.
I have tried a simple FILEDSN
in the connString
but it looks like pyodbc
doesn't use the specified file :
pyodbc.connect("FILEDSN=<path-to-file>.dsn;UID=<uid>;PWD=<pwd>")
yields the following error :
pyodbc.InterfaceError: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found and no default driver specified (0) (SQLDriverConnect)')
The .dsn
file contains the exact same information that is in my odbc.ini
file under that DSN :
[ODBC]
Driver = /usr/lib/virtodbc_r.so
Address = <my-endpoint>
The fact that it's unixODBC
that's sending the error message makes me think pyodbc
doesn't even read my .dsn file, since if it did it would use a different driver (the Virtuoso ODBC Driver). Is there something I'm missing here about pyodbc or connStrings ?
NB : I have managed to circumvent the issue through DSN-less connection for now, but getting the necessary information from ENV variables instead of a proper DSN definition looks like a bad practice.
Upvotes: 0
Views: 32
Reputation: 9434
Note that unixODBC is a driver manager, not a driver.
You might consider switching to the iODBC driver manager, which is maintained by OpenLink Software, also the source of Virtuoso.
Upvotes: 0
Reputation: 123409
According to the docs:
"unixODBC does not at this time support FILEDSN's but it will when I get around to it."
Upvotes: 0