Python使用win32com操控Access
博客专区 > Ev4n 的博客 > 博客详情
Python使用win32com操控Access
Ev4n 发表于1年前
Python使用win32com操控Access
  • 发表于 1年前
  • 阅读 179
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

网上的教程很多啊,有必要写个这个么?我也这么期待着,可是,这个过程没那么简单。

为什么选择python来操控Access数据库呢?因为我电脑上没有.net啊!加之自己对python的强大功能相当的自信,就顺其然的选择了。从前使用python操作postgresql也没什么难处啊,于是就信誓旦旦的开始了。

这里就是简单的操作过程。姑且放下相关函数,来准备工具吧。

步骤一:选择三方库。

python肯定没有自带的函数,但是可以拓展嘛。网上的有推荐win32com,看起来很符合要求,虽然我从没有接触过。win32com只能从sourceforge  这里选择对应的包,但是,但是具体的位数呢?是32位还是64呢?根据我自己的python来吧,64位的电脑当然要安装64位的python啦,于是就下来64位的。(实际上最开始安装32位的是在注册表中找不到我的python)

步骤二:安装Microsoft Access Database Engine 2010 Redistributable

这个官方有对应的免费下载,可是,可是还是要选择64啊,嗯,一朝64,总是选择64位吧。下载后安装,一切顺利。

步骤三:写代码。

Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import win32com.client as client
>>> conn=client.Dispatch('ADODB.Connection')
>>> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=e:\\aaa.mdb;'
>>> conn.Open(DSN)

然后,就这玩意了。

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    conn.Open(DSN)
  File "<COMObject ADODB.Connection>", line 3, in Open
  File "D:\python27\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
    result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, u'ADODB.Connection', u'\u672a\u627e\u5230\u63d0\u4f9b\u7a0b\u5e8f\u3002\u8be5\u7a0b\u5e8f\u53ef\u80fd\u672a\u6b63\u786e\u5b89\u88c5\u3002', u'C:\\Windows\\HELP\\ADO270.CHM', 1240655, -2146824582), None)

先看看那一段unicode是什么吧。发生意外,ADODB.Connection 未找到提供程序。该程序可能未正确安装。这个问题在百度里很多啊,但是很多都是IIS中连接Access数据库时,这个我确实没辙了。

这位仁兄提到各种位数的问题,我于是测试了 Engine 32位的,但是安装之前要卸掉刚安好的64位,做吧。结果没有变化。这里的论坛有过相关话题,但是还是没有解决。

最后吧,还是全换成了32位的了,可以了。

坑!

共有 人打赏支持
粉丝 6
博文 12
码字总数 8868
×
Ev4n
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: