Pyodbc - "Data source name not found, and no default driver specified"
I believe the answer to your problem is that in your ~/.odbc.ini file you are saying to use driver PostgreSQL
- but you have not defined that driver in your /etc/odbcinst.ini file. Try changing PostgreSQL
to PostgreSQL ANSI
or PostgreSQL Unicode
(both of which are defined in /etc/odbcinst.ini).
For me, the issue was the actual location of my odbc.ini and odbcinst.ini files.
On many systems, the install location of these files is in /etc/
However, in my case, these files were located under /usr/local/etc/
The could be determined by typingodbcinst -j
Which yielded:
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /usr/local/etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
My odbc.ini files already exists in /etc, so the solution was to copy them over over from /etc/ to /usr/local/etc/
cp /etc/odbc.ini /etc/odbcinst.ini /usr/local/etc/
Edit: It's also worth noting that the path outputted by the odbcinst -j command can change depending on using sudo
or not.