首页 > 解决方案 > 如何使用 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

错误:“函数”对象没有属性“TableDefs”

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

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

标签: pythonms-access

解决方案


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

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

oDB = oAccess.CurrentDb()

这解决了眼前的问题(同样适用tbl.RefreshLink,这可能应该是tbl.RefreshLink())。

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


推荐阅读