用Python连接到MS Access

时间:2018-06-08 09:49:05

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

我尝试了很多来自互联网的例子,包括一个没有成功的MS Access项目的MS Access连接

我在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óunaexppción。',(0,'ADODB.Connection','Noseencontróelproveedor especificado.Es posible quenoestéinstaladocorrectamente。','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 nosepecpecificóningúncontroladorpredeterminado(0)(SQLDriverConnect)')< / p>

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

在ODBC中,您确定已安装此驱动程序吗?

您可以使用pyodbc.drivers()

获取可用驱动程序列表

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

读取MS Access数据

答案 1 :(得分:0)

您可能拥有32位访问(Office)和64位Python。如您所知,32位和64位是完全不兼容的。您需要安装32位Python,或将Access(Office)升级到64位,然后它才能工作。简而言之,您不能将64位Python.exe(在应用程序级别上)连接到32位MS Access ODBC驱动程序(odbcad32.exe),因为在两种类型之间简单地存储和处理不同的数据。但是,由于具有向后兼容性,建议使用最低公分母来工作,因为64位OS可以运行32位应用程序,并且同一级别的程序可以彼此“交谈”。请查看下面的URL以获取所有详细信息。

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