使用Python连接到MS Access [英] Connect to MS Access in Python

查看:95
本文介绍了使用Python连接到MS Access的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了很多来自Internet的示例,以包括到我的python项目的MS Access连接,而没有成功

I tried a lot of examples from internet to include a MS Access connection to my python project without sucess

我在带有Anaconda的Eclipse中有我的python项目,我的代码是:

I have my python project in Eclipse with Anaconda, and my code is:

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时,我收到以下消息:

With data1 I get the following message:

pywintypes.com_error:(-2147352567,'Ocurrióunaexcepción.,',(0,'ADODB.Connection','no enconcontróeléprovedeespecificado.E posible que noinestéinstalado Correctamente.','C:\ WINDOWS \ HELP \ ADO270.CHM',1240655,-2146824582),无)

pywintypes.com_error: (-2147352567, 'Ocurrió una excepción.', (0, 'ADODB.Connection', 'No se encontró el proveedor especificado. Es posible que no esté instalado correctamente.', 'C:\WINDOWS\HELP\ADO270.CHM', 1240655, -2146824582), None)

还有data2这个:

pyodbc.InterfaceError :("IM002","[IM002] [Microsoft] [控制者ODBC管理器]"没有特定的名称或名称,也没有特定的控制者预先确定(0)(SQLDriverConnect)')

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)')

有什么想法吗?

推荐答案

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

You probably have 32-bit Access (Office) and 64-bit Python. As you know, 32-bit and 64-bit are completely incompatible. You need to install 32-bit Python, or upgrade Access (Office) to 64-bit, and then it will work. Succinctly put, you cannot connect (at application level) a 64-bit Python.exe to a 32-bit MS Access ODBC driver (odbcad32.exe) since simply data is stored and processed differently between the types. However with backwards compatibility, it is advised to work in lowest common denominator as a 64-bit OS can run 32-bit applications and same level programs can "talk" to each other. Please take a look at the URL below for all details.

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

这篇关于使用Python连接到MS Access的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆