使用Python连接到Access.accdb数据库

2024-04-27 05:15:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的一个Python应用程序在使用旧的.mdb Access数据库时运行良好,出现了一个问题。在转换为access2010并将文件转换为新的.accdb格式后,似乎没有任何工作。我有32位访问版本加载在一个新的64位win7操作系统。我相信我的问题是代码的前两行。我认为我需要更新它们以引用“MicrosoftOffice14.0Access数据库引擎对象”,但我不清楚如何做到这一点。我能帮我一下吗?我已经搜索了关于这个场景的DAO信息,但还是有用的。在

 import win32com.client
 engine = win32com.client.Dispatch("DAO.DBEngine.36")

 db=engine.OpenDatabase(r"c:\temp\Tracker.accdb")

 table = db.OpenRecordset("select * from Event_Log")
 print table.RecordCount

Tags: 文件版本client数据库应用程序dbaccess格式
1条回答
网友
1楼 · 发布于 2024-04-27 05:15:14

对于操作来说,一个答案可能太迟了,但是如果有人无意中在这里用Python寻找DAO领域的答案:

操作是正确的,即直接的问题在于分派方法中使用的字符串。Office 2010(Office 14?)安装“DAO.DBEngine.120“,我认为这是最早的版本,可以处理.accdb文件。一般来说,可以通过使用RegEdit在注册表中搜索子字符串来研究此问题DAO.DBEngine,并查看已注册哪些组件向该字符串添加版本号。在

还应该注意,要使用的python版本的32/64位需要与DAO版本的32/64位相匹配,而DAO版本又与安装它的Office的32/64位相匹配。在

另一个注意事项:如果您正在使用IDE并使用autocomplete,那么生成和导入与daoapi相对应的模块是很有用的。这可以通过在相关库上运行MakePy实用程序(在PythonWin程序中)来实现,这里是“microsoftoffice14.0access数据库引擎对象库”。这将在site packages\win32com\gen_py\中生成一个具有长GUID名称的模块文件。。。你可以把它改名为“DAO_120-64.py”或类似的名称。然后将gen_py目录添加到Python路径(或在sitepackages中添加一个.pth文件),以便import可以找到新模块。在

导入后,您可以执行IDE识别的任何操作,将类型与变量关联起来DAO.数据库, DAO.记录集,以此类推。在

此外,生成的DAO模块对于可用的对象、方法、属性和常量也是一个有用的参考。可能更有用的参考是打开一个Excel/Word/Access VBA工程,引用(导入)同一个库,并在其上使用VBA对象浏览器。在

一般来说,任何关于在Access中使用DAO的教程或文章(在VBA或VB中)都将描述常见操作中涉及的对象、方法和属性,这些操作几乎可以一字不差地转录到python中。主要区别在于,在python版本中,一些COM“默认方法”机制不起作用。例如,VBA

MyRecordset(“SomeColumn”)=“新值”

。。。在python中对应于:

在我的记录集字段(“SomeColumn”).Value=“新值”

希望有帮助。在

相关问题 更多 >