使用Python获取链接表的MS Access源数据库

时间:2019-02-28 16:16:36

标签: python ms-access pyodbc pywin32 win32com

经过大量研究后,我要求您提供指导!

使用 Python ,我必须进入多重访问数据库,并提取有关那些数据库内容的信息(表名,类型表,如果是链接表,则来源 ...)。

我从使用 pyodbc 开始,但是当我想访问包含所有我想要的数据的表 MSysObjects 时,却遇到了授权问题< / strong>(“ 无法读取记录,对“ \ xa0MSysObjects \ xa0 ”没有读取权限)。

经过一番搜索,我发现在Access DB中执行授权该请求的代码行很少。但是由于某些功能只能在Access DB上使用,因此需要从每个Access DB启动它。

因此,我决定使用 win32com 来查看它是否有解决方案。 可悲的是,事实并非如此。 我有完全相同的错误。

最后似乎只有很少的解决方案:

  1. 找到一种方法,将授予授权的几行 数据库(可能是通过Python或通过制作Python直接导入 从特定的Access数据库导入它)然后执行它。
  2. 找到一种从MSysObjects之外的另一种方式获取所需信息(这里是链接表的源数据库)的方法。
  3. 找到一种通过SQL请求直接从Python更新授权的方法。

我希望我可以理解! 如果您对我想到的一种解决方案甚至其他解决方案都有答案,我将非常感激!

最诚挚的问候!

1 个答案:

答案 0 :(得分:0)

如果您可以使用非Python解决方案,那么我认为VBA是此类工作的最佳工具。

Private Sub Command1_Click()

Dim db As DAO.Database, tbl As DAO.TableDef
Dim f As DAO.Field
Set db = CurrentDb() ' Connect to current database

' Loop through each table in the database
For Each tbl In db.TableDefs
    Debug.Print "Table name: ", tbl.Name
    ' Loop throuth each field in the table
    For Each f In tbl.Fields
        Debug.Print "Field: ", f.Name
    Next f
Next tbl

End Sub