在 Python 中连接到 MS Access
Posted
技术标签:
【中文标题】在 Python 中连接到 MS Access【英文标题】:Connect to MS Access in Python 【发布时间】: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)')
有什么想法吗?
【问题讨论】:
【参考方案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 中似乎无法识别。以上是关于在 Python 中连接到 MS Access的主要内容,如果未能解决你的问题,请参考以下文章