将Python连接到SAGE 100 MAS 90 4.0 ODBC驱动程序

将Python连接到SAGE 100 MAS 90 4.0 ODBC驱动程序,python,etl,Python,Etl,有没有办法通过python将SAGE 100与MAS 90 4.0 ODBC驱动程序(PVXODBC.DLL)连接起来?我曾尝试使用pyodbc,但一直出现错误。我已在windows中使用正确的凭据设置DSN名称。我使用DSN通过pentaho(一个etl工具)连接到数据库,它可以工作 pyodbc.connect("DSN=DSN_NAME") Error: ('IM014', '[IM014] [Microsoft][ODBC Driver Manager] The specified D

有没有办法通过python将SAGE 100与MAS 90 4.0 ODBC驱动程序(PVXODBC.DLL)连接起来?我曾尝试使用pyodbc,但一直出现错误。我已在windows中使用正确的凭据设置DSN名称。我使用DSN通过pentaho(一个etl工具)连接到数据库,它可以工作

pyodbc.connect("DSN=DSN_NAME")

Error: ('IM014', '[IM014] [Microsoft][ODBC Driver Manager] The specified DSN
contains an architecture mismatch between the Driver and Application (0)
(SQLDriverConnect)')
我也试过:

pyodbc.connect("DSN=DSN_NAME;DRIVER={MAS 90 4.0 ODBC DRIVER}")

我也遇到了同样的错误。

看起来您使用的是32位驱动程序和64位ODBC,反之亦然。

这段代码适合我:

import pyodbc
serial = '100170'
cnxn = pyodbc.connect("DSN=SOTAMAS64", autocommit=True)
cursor = cnxn.cursor() 

cursor.execute("SELECT SalesOrderNo ,UDF_SERIAL_NUMBER FROM SO_SalesOrderHistoryHeader WHERE UDF_SERIAL_NUMBER = ? ORDER BY SalesOrderNo",    serial)
row = cursor.fetchone() 
if row:
    print(row) 
DSN是带有MAS 90 4.0 ODBC驱动程序(64位)的系统DSN设置。
使用Winpython 3.5

这看起来像是更改为32位ODBC解决了这个问题,但现在我遇到了这个问题,运气不太好。错误:('S1C00'、'[S1C00][ProvideX][ODBC Driver]驱动程序不支持(1010)(SQLSetConnnectAttr(SQL\u ATTR\u AUTOCOMMIT)))下面是导致该错误的最可能原因。您会发现它经常出现在为应用程序或文件系统而不是数据库编写的驱动程序中。将autocommit=True添加到连接参数中。