【问题标题】:Connect to MS Access in Python在 Python 中连接到 MS Access
【发布时间】:2018-06-08 09:49:05
【问题描述】:

我尝试了很多来自 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_error: (-2147352567, 'Ocurrió una excepción.', (0, 'ADODB.Connection', 'No se encontró el proofedor especificado. Es posible que no esté instalado correctamente.', 'C:\WINDOWS \HELP\ADO270.CHM', 1240655, -2146824582), 无)

还有 data2 这个:

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado (0) (SQLDriverConnect)')

有什么想法吗?

【问题讨论】:

    标签: python python-3.x python-2.7 ms-access pyodbc


    【解决方案1】:

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

    https://datatofish.com/how-to-connect-python-to-ms-access-database-using-pyodbc/

    【讨论】:

      【解决方案2】:

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

      在 ODBC 中,您确定安装了这个驱动程序吗?

      您可以使用pyodbc.drivers()获得可用驱动程序列表

      例如,就我而言,我使用此驱动程序Microsoft Access Driver (*.mdb)读取 MS Access 数据

      【讨论】:

      • 是的,我在 windows 的管理工具上配置了我的 ODBC 驱动程序,但在 eclipse 中似乎无法识别。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2019-11-21
      相关资源
      最近更新 更多