win7 64位,anaconda x86-x64位,64位python3.7.4及32bit的office2007情况下pywin32无法操作access的解决方法

在win7 64位系统、Anaconda x86-x64、64位Python 3.7.4及32位Office 2007环境下,使用pywin32无法直接操作Access数据库。问题关键在于需要安装AccessDatabaseEngine_X64.exe,即使Office是32位的,这个64位驱动也能兼容。通过ADODB.Connection对象成功建立数据库连接并进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

win7 64位,anaconda x86-x64位,64位python3.7.4及32bit的office2007情况下pywin32无法操作access的解决方法

起初考虑pywin32位数问题,查询下来本来包名就是pywin32,conda list 查询下来没有安装,然后conda install pywin32 安装

还是不行

考虑是win32com.client问题,果然发现连接数据库需要专门的驱动,微软官方提供的,需要单独安装,不过只有office2010的,看说明office2007也可以用,但是具体安装时

发现不是64位office不能安装,但是升级office也不现实,固定环境的。然后想在odbc上动脑筋结果也是没效果,怀疑ADODB.Connection对象,结果查询时发现有个帖子专门提到

AccessDatabaseEngine_x64 文件是可以在32位office系统中使用的。

AccessDatabaseEngine_X64.exe /passive

搞定

 

附件图示等

#先要安装与Python和操作系统匹配的pywin32
#利用win32com.client模块的COM组件访问功能,通过ADODB访问Access的mdb文件
#建立数据库连接
import win32com.client
conn = win32com.client.Dispatch(r"ADODB.Connection")
#DSN = 'PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = 旅行小助手.mdb'  #Access2003以前
DSN = 'PROVIDER = Microsoft.ACE.OLEDB.12.0;DATA SOURCE = 1.mdb ;'  #Access2007及以后
conn.Open(DSN)

#打开一个记录集Recordset
rs = win32com.client.Dispatch(r'ADODB.Recordset')
tablename = '旅行线路表'
rs.Open('[' + tablename + ']', conn, 1, 3)

#遍历记录,读取数据
#rs.MoveFirst()  #光标移到首条记录
while not rs.EOF:
    for i in range(rs.Fields.Count):
        print(rs.Fields[i].Name, ":", rs.Fields[i].Value)    #字段名:字段内容
    print(end='\n')
    rs.MoveNext()     #光标移到下条记录
print('该表有'+str(rs.Fields.Count)+'个字段')    
print('该表有'+str(rs.RecordCount)+'条记录')

#关闭连接
conn.Close()
com_error: (-2147352567, 'Exception occurred.', (0, u'ADODB.Connection', u'Provider canno t be found. It may not be properly installed.', u'C:\\Windows\\HELP\\ADO270.CHM', 1240655, -21468245 82), None)

64位access连接组件错误提示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值