的回答可能为时已晚了OP,但万一别人绊倒在这里DAO的使用Python的区域寻找一个答案:
的OP是正确的,因为直接的问题在于Dispatch方法中使用的字符串。 Office 2010(Office 14?)安装了“DAO.DBEngine.120”,这是我认为最早用于.accdb文件的版本。一般来说,可以通过使用RegEdit在注册表中搜索子字符串“DAO.DBEngine”来研究此问题,并查看哪些组件已注册,以便为该字符串添加版本号。
还应该注意的是,要使用的python版本的32/64位需要与DAO版本的32/64位相匹配,后者又匹配安装它的Office的32/64位。
还有一点需要注意的是:如果您使用IDE并利用自动完成功能,那么生成并导入与DAO API相对应的模块会很有用。这可以通过运行相关库中的MakePy实用程序(在PythonWin程序中)来完成,这里是“Microsoft Office 14.0 Access数据库引擎对象库”。这会在site-packages \ win32com \ gen_py \中生成一个模块文件,并带有一个长的GUID名称......您可以将其重命名为“DAO_120-64.py”或其他。然后将gen_py目录添加到Python路径(或者在sitepackages中添加.pth文件),以便导入可以找到新模块。
导入之后,您可以执行任何IDE可识别的将类型与变量关联的DAO.Database,DAO.Recordset等。
此外,生成的DAO模块是什么对象,方法,属性和常量可用的有用参考。可能更有用的参考是简单地打开一个Excel/Word/Access VBA项目,参考(导入)这个相同的库,并使用VBA对象浏览器。
一般来说,有关在Access(VBA或VB)中使用DAO的任何教程或文章将描述常见操作中涉及的对象,方法和属性,这些对象,方法和属性几乎可逐字逐句地转录为python。主要区别在于在Python版本中,某些COM“默认方法”机制不起作用。因此,举例来说,所述VBA
MyRecordset( “SomeColumn”)= “的NewValue”
...在python对应于:
MyRecordset.Fields( “SomeColumn”)值=“的NewValue。 “
希望有帮助。