连接到Python中的MS Access

连接到Python中的MS Access,python,python-3.x,python-2.7,ms-access,pyodbc,Python,Python 3.x,Python 2.7,Ms Access,Pyodbc,我尝试了许多来自internet的示例,以将MS Access连接包括到我的python项目,但没有成功 我在Eclipse中使用Anaconda进行python项目,代码如下: import win32com.client import pyodbc def ado(): ''' connect with com dispatch objs ''' conn = win32com.client.Dispatch(r'ADODB.Connection') DSN = ('PR

我尝试了许多来自internet的示例,以将MS Access连接包括到我的python项目,但没有成功

我在Eclipse中使用Anaconda进行python项目,代码如下:

import win32com.client
import pyodbc

def ado():
 '''
  connect with com dispatch objs
  '''
  conn = win32com.client.Dispatch(r'ADODB.Connection')
  DSN = ('PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = ' + db +  ';')
  conn.Open(DSN)

  rs = win32com.client.Dispatch(r'ADODB.Recordset')
  strsql = "select * from Empresas"
  rs.Open(strsql, conn, 1, 3)
  t = rs.GetRows()
  conn.Close()
  return t

def odbc():
  '''
  connects with odbc
  '''        
  constr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=' + db
  conn = pyodbc.connect(constr, autocommit=True)
  cur = conn.cursor()
  strsql = "select * from Empresas"
  cur.execute(strsql)
  t = list(cur)
 conn.close()
 return t

 if __name__ == '__main__':

  db = 'D:/EMP001/2018/example.mdb'
  data1 = ado()
  data2 = odbc()
使用data1,我得到以下消息:

pywintypes.com_错误:(-2147352567,'Ocurrióuna execpción.,(0,'ADODB.Connection','No se encontróel proveedor specificado.Es possible que No estéinstalado correctante','C:\WINDOWS\HELP\ADO270.CHM',1240655,-2146824582),无)

用数据2这个:

pyodbc.InterfaceError:('IM002'、'[IM002][Microsoft][Administrator de controladores ODBC]没有数据原始名称的附件,也没有特定的控件预定义(0)(SQLDriverConnection)'))


有什么想法吗?

在这两种情况下,错误消息都表示找不到驱动程序(ODBC)或提供程序(ADO)

在ODBC中,是否确实安装了此驱动程序

您可以使用
pyodbc.drivers()


例如,在我的例子中,我使用此驱动程序读取MS Access数据
Microsoft Access驱动程序(*.mdb)

您可能拥有32位访问权限(Office)和64位Python。正如您所知,32位和64位是完全不兼容的。您需要安装32位Python,或者将Access(Office)升级到64位,然后它就可以工作了。简而言之,您无法(在应用程序级别)将64位Python.exe连接到32位MS Access ODBC驱动程序(odbcad32.exe),因为不同类型的数据存储和处理方式不同。但是,对于向后兼容性,建议使用最小公分母,因为64位操作系统可以运行32位应用程序,而相同级别的程序可以相互“对话”。请查看下面的URL以了解所有详细信息


是的,我在windows的管理工具上配置了ODBC驱动程序,但在eclipse中似乎无法识别。