Python-Oracle connection issue with Pyodbc

2019-09-14 13:59发布

问题:

Tried to connect to the Oracle database using Pyodbc:

try:
    db_connection = pyodbc.connect('DSN=OraDev; PWD=%s' % Key.dbKeys['password'])
except pyodbc.Error, err:
        print >> debug_file, "Database connection failed: %s" %err 
        sys.exit()

and it keeps giving me this error message:

'[IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application (0) (SQLDriverConnect)

So I am wondering if the culprit is that I am not having the "matching" components. Currently, I have:

  1. Python 2.7 32bit
  2. Pyodbc 3.0.6 win32-py2.7
  3. Oracle ODBC driver: 32bit
  4. Windows server 2008 64bit
  5. Oracle 11.2.0 64bit

Are there anything wrong with the versions here? Thanks.

回答1:

The issue you are having is that 64 bit Windows does not play well with 32 bit ODBC. You can read more about it here:

The 32-bit version of the ODBC Administrator tool and the 64-bit version of the ODBC Administrator tool display both the 32-bit user DSNs and the 64-bit user DSNs in a 64-bit version of the Windows operating system.

The work around is to specifically target the ODBC driver for the architecture you are looking to implement.

A side note, trying to implement ODBC for oracle on a mixed architecture platform became a headache for us. So, we implemented access to oracle through CX_Oracle