gpt4 book ai didi

python - 使用 Python 到 Access .accdb 数据库的 DAO 连接

转载 作者:行者123 更新时间:2023-11-28 17:47:20 25 4
gpt4 key购买 nike

我的一个 Python 应用程序出现问题,该应用程序在较旧的 .mdb Access 数据库上运行良好。转换为 Access 2010 并将文件转换为新的 .accdb 格式后,似乎没有任何效果。我确实在新的 64 位 Win 7 操作系统上加载了 32 位 Access 版本。我相信我的问题出在代码的前两行。我相信我需要更新它们以引用“Microsoft Office 14.0 Access 数据库引擎对象”,但我不清楚如何执行此操作。我能得到一些帮助吗?我到处搜索有关这种情况的 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

最佳答案

OP 的答案可能为时已晚,但万一其他人在这里偶然发现使用 Python 在 DAO 领域寻找答案:

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文件),这样import就可以找到新的模块了。

导入后,您可以执行任何 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").Value = "NewValue"

希望对您有所帮助。

关于python - 使用 Python 到 Access .accdb 数据库的 DAO 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com