要创建一个新的空.accdb文件,下面的Python代码应该可以做到:import win32com.client
f = 'C:\\Users\\Gord\\Desktop\\pyTest.accdb'
c = win32com.client.Dispatch('ADOX.Catalog')
c.Create('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + f + ';')
c = None
print '"' + f + '" created.'
[编辑1]
对博客文章here的评论建议,如果.Create调用生成“类未注册”错误,则可能需要使用regsvr32.exe重新注册{}。尝试此操作时请注意“位性”:这些文件的和都有32位和64位版本:
64位
C: \Windows\System32\regsvr32.exe
C: \程序文件\通用文件\系统\ado\msadox.dll在
32位
C: \Windows\SysWOW64\regsvr32.exe
C: \程序文件(x86)\Common Files\System\ado\msadox.dll在
另外,请注意,您可能正在64位计算机上运行32位Python。在
[编辑2]
我做了一些测试,得出的结论是,这种方法在这种特殊情况下不起作用,因为Python脚本是以64位的身份运行的,但是64位Access数据库引擎没有安装。(32位Office仅安装32位版本的ACE。)
错误信息可能有点误导。丢失的不是ADOX组件(未注册),而是找不到ACE引擎本身的64位版本。在
此外,在安装了32位访问的64位计算机上,64位版本的ACE将永远不可用,因为它无法安装
当您试图从64位Python脚本操作.accdb文件中的数据时,这很可能会产生影响。我的“64位Windows上的32位Office”测试机器上没有Python可用,但是当我尝试下面的VBScript时。。。在
^{pr2}$
…结果如下:C:\__tmp>C:\Windows\System32\cscript.exe /nologo dataAccessTest.vbs
C:\__tmp\dataAccessTest.vbs(4, 1) ADODB.Connection: Provider cannot be found.
It may not be properly installed.
C:\__tmp>C:\Windows\SysWOW64\cscript.exe /nologo dataAccessTest.vbs
This is Table1 data in Access.
脚本在以64位运行时失败,但在以32位运行时正常工作。在
建议:如果您的机器安装了32位访问,那么您最好也将Python脚本作为32位来运行。在