如何使用 Python 遍历 MS Access 表

问题描述

from win32com.client import dispatch

oAccess = dispatch("Access.Application")
oAccess.Visible = False
oAccess.OpenCurrentDatabase(my_db)
oDB = oAccess.CurrentDB

for tbl in oDB.TableDefs:
     print(table.Name)
     tbl.RefreshLink

我也做过:

for tbl in oAccess.TableDefs:
     print(table.Name)
     tbl.RefreshLink

错误:'function' 对象没有属性 'TableDefs'

我开始了解如何使用 win32com 操作 Windows,但出于某种原因,似乎无法识别“.TableDefs”。我是不是用错了方法

我知道这可以在 VBA 中完成。我的任务是将所有内容都切换到 Python。

解决方法

这里的第一个错误是 VBA 知道 CurrentDb 是一个方法,并且无法将方法分配给变量,因此它会调用该方法。

然而,Python 在将方法分配给变量时有 0 个问题,所以就这样做了。这意味着您需要括号来调用该方法:

oDB = oAccess.CurrentDb()

这解决了当前的问题(tbl.RefreshLink 也是如此,这可能应该是 tbl.RefreshLink())。

此外,您从不定义 table,只定义 tbl,因此您可能需要 print(tbl.Name)